X



プログラミングのお題スレ Part14
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
垢版 |
2019/05/18(土) 17:33:29.45ID:BWmpW4IF
プログラミングのお題スレです。

【出題と回答例】
1 名前:デフォルトの名無しさん
  お題:お題本文

2 名前:デフォルトの名無しさん
  >>1 使用言語
  回答本文
  結果がある場合はそれも

【ソースコードが長くなったら】 (オンラインでコードを実行できる)
https://ideone.com/
http://codepad.org/
http://compileonline.com/
http://rextester.com/runcode
https://runnable.com/
https://code.hackerearth.com/
http://melpon.org/wandbox
https://paiza.io/

宿題は宿題スレがあるのでそちらへ。

※前スレ
https://mevius.5ch.net/test/read.cgi/tech/1549160513/
0005デフォルトの名無しさん
垢版 |
2019/05/19(日) 08:48:39.78ID:b1S+2jBu
お題
1. URLエンコード
次の文字列をURLエンコード(パーセントエンコーディング)せよ。
但しURLエンコード専用ライブラリだけは使わない事。
‘日 本’
( 全角2文字の間に半角スペースが一つ入ってる.)

元の文字コードはUTF8とする。 この場合は7バイト。
パーセントエンコードとは、バイトの並びについて各バイトを「%XX」(XXは十六進法)という文字列への変換である。 バイト列への変換はライブラリを使っても良い。

正解(アルファベットは小文字も可)
%E6%97%A5%20%E6%9C%AC

2. URLデコード
1でURLエンコードされたものをURLデコードせよ。
URLデコード用ライブラリがあれば使う事。
正解 日 本
0006デフォルトの名無しさん
垢版 |
2019/05/19(日) 08:56:45.08ID:b1S+2jBu
>>5 python

from urllib.parse import unquote #,quote
url = '日 本'

urle = ''.join([ '%{:x}'.format(b) for b in url.encode('UTF-8') ])

print(urle) # encode same #print(quote(url))
print(unquote(urle)) # decode

''' # 出力
%e6%97%a5%20%e6%9c%ac
日 本
'''
0007デフォルトの名無しさん
垢版 |
2019/05/19(日) 09:25:01.68ID:c0f8nIXT
何も考えないバカはすぐに飛びつくなぁ
これお題に見せかけた課題か宿題だろw
0009デフォルトの名無しさん
垢版 |
2019/05/19(日) 11:02:33.76ID:zmnHcBRa
各桁を足し合わせたら引数で与えられた数になるものを5個返す関数を作れ。

例:
sumnum 12
> [39,48,57,66,75] <- 3 + 9 = 12, 4 + 8 = 12, 5 + 7 = 12, 6 + 6 = 12, 7 + 5 = 12
0011デフォルトの名無しさん
垢版 |
2019/05/19(日) 12:12:27.92ID:tgogs/mB
お題
(0,0)(0,999)(999,0)(999,999)のx,y 座標系の中の問題

次の20個の数値を先頭から2個ずつ取ってのx,y の位置に 10個のポイントがあるとする。

[136, 577, 110, 927, 472, 199, 157, 808, 388, 598, 94, 31, 388, 157, 325, 409, 787, 897, 850, 598]

(136,577) (110,927) 〜(850,598) 10ポイント

問題1 外側の正方形
全てのポイントが正方形の内側にあり、正方形の面積が一番小さくなる正方形の4点の座標を示せ。 但し正方形の座標は(999,999)の範囲内とする。
正方形は斜めもあり得る。 正方形の辺は必ず2点以上ポイントに重なっている。

問題2 内側の正方形
全てのポイントが正方形の外側にあり、正方形の面積が一番大きくなる4点の座標を示せ。
正方形は斜めもあり得る。 正方形の辺は必ず2点以上ポイントに重なっている。

問題を難しく感じる人は、斜めの正方形は考えないとしても良い。その旨回答に書いておいてください。
0014デフォルトの名無しさん
垢版 |
2019/05/19(日) 12:29:21.94ID:tgogs/mB
>>12 おいおい、金儲けにするんかい。 ま、金を払う人がいるなら良いが。 学生の宿題に需要があるかな?
しかしこんなところで宣伝すんな。
0016デフォルトの名無しさん
垢版 |
2019/05/19(日) 13:00:59.70ID:tgogs/mB
>>15 93 だけは正しいけど他は違うだろと思ったが、0を足しても結果は変わらないから詐欺に近いな。
しかしこう言う指摘は、プログラムには重要。

こう言う考え方をするなら、129 12342 なども該当するな。
あまりにも組み合わせが多すぎるから、条件をつけないとな。

問題の条件として各桁に0は含まないとしたり数字は2桁以内とするとか、答えは一番大きな数字を上から順に5つ示せとか。
0017デフォルトの名無しさん
垢版 |
2019/05/19(日) 13:16:39.44ID:tgogs/mB
出題するときには、答えが一意になる様にした方が良い。
回答する方も戸惑うし、正解が何かも判りづらくなる。

出来るだけ正解は少ない方が良い。 理想的には一つ。
0018 ◆QZaw55cn4c
垢版 |
2019/05/19(日) 14:18:25.76ID:8BTe2vpb
>>14
>>12 のどこに宣伝の文言が記載されているのですか?
0019デフォルトの名無しさん
垢版 |
2019/05/19(日) 14:19:46.32ID:xtBtC84Z
0 -> 1
1 -> 11
2 -> 101
3 -> 1111
4 -> 10001
5 -> 110011
6 -> 1010101
7 -> 11111111
8 -> 100000001
9 -> 1100000011
10 -> 10100000101
11 -> 111100001111
12 -> 1000100010001
13 -> 11001100110011
14 -> 101010101010101
15 -> 1111111111111111
この0から15までを隙間なく並べる
隙間なく並べるとは例えばこの0から2までなら
0 -> 1
1 -> 11
2 -> 101

---1
11
--101

11111
このように1同士がぶつからずにそして0がなくなるように並べる
この場合の解答は0番を3つ右にずらして2番を右に二つずらしているので
(0,3)(1,0)(2,2)となる
0020デフォルトの名無しさん
垢版 |
2019/05/19(日) 14:36:55.39ID:GWUTnTrp
詐欺は酷くないか
要件は満たしてるし、何より解が存在する全ての値に対して正しい解を出力するだろ
sumnum 1についても対応しようとしたらこれが綺麗な解法の1つであることは疑いようもない事実のはず
0021デフォルトの名無しさん
垢版 |
2019/05/19(日) 14:45:53.44ID:GWUTnTrp
>>20 と思ったが俺が間違ってた
相違なる数と言われてないから、sumnum 0に対しても[0,0,0,0,0]が解を満たすわな、すまんかった
0023デフォルトの名無しさん
垢版 |
2019/05/19(日) 14:55:35.26ID:Ep+P2jjw
>>18 リンク先に書いてあるじゃん、金払えと。
>>19 さっぱりわからん。 何のための説明をしてるの? どんな問題に関係してるの?
0024デフォルトの名無しさん
垢版 |
2019/05/19(日) 15:06:26.05ID:dHqS2yoD
お題
ペアノの公理、及びペアノに依る加法の定義に従って 128 + 256 を計算せよ。
0025 ◆QZaw55cn4c
垢版 |
2019/05/19(日) 15:08:58.77ID:8BTe2vpb
>>23
>リンク先に書いてあるじゃん、金払えと

根拠のないデマを流さないでください
>>12 に記載のアンカーの一つ >>10
>>10 に記載のアンカー(リンクの一つ) https://mevius.5ch.net/test/read.cgi/tech/1434079972/56
https://mevius.5ch.net/test/read.cgi/tech/1434079972/56 に記載のリンクは https://ideone.com/Nxx41h でこれは ideone へのリンク
リンクをたどれるところのどこにも宣伝は記載していません

>>10 に記載のアンカーの一部 https://mevius.5ch.net/test/read.cgi/tech/1434079972/
のうち https://mevius.5ch.net/test/read.cgi/tech/1434079972/1 には、ビットコインの請求が発生する手順が定義されており
その定義を満たさないものについては、特に「※本フローに従わない回答掲示についてはビットコインの請求は発生しないものとします。」と注記していますね

したがって、そもそも「金払え」とは書いてませんし、あるいは「ビットコインを払え」とすら書いていませんね
0026デフォルトの名無しさん
垢版 |
2019/05/19(日) 15:58:31.52ID:+SzmmtV9
>>25 だったら何で金を要求するサイトへのリンクを貼るんだよ。 ビットコインを稼ぎたいための宣伝だろ?

下心がないのなら直接 ideon のリンクを貼れば良いじゃないか。 面倒臭いし。
0027 ◆QZaw55cn4c
垢版 |
2019/05/19(日) 16:07:32.50ID:8BTe2vpb
>>26
自分の書いたコードを一箇所に固めているだけですよ
これわりと便利で、3年前のコードなんかすっかり忘れてしまっているのを呼び出せるのです、ああ、あのとき N クイーンやったよね、とか
自分のローカルは一つのディレクトリに放り込んでいるだけだから grep でも検索困難…
0028デフォルトの名無しさん
垢版 |
2019/05/19(日) 16:17:53.58ID:+SzmmtV9
練習問題のコードなんて使い捨てでいいじゃない。 俺も最初の頃は記録してたけど、もうやめた。
要は必要なときに必要なコードが書けなければそれまでなんだから、最初から勉強し直しても同じ。
昔のコードを見ても自分が理解していないんだから同じ。

沢山練習した方が良い。 基本から見直す事でより理解が深くなる。
0029 ◆QZaw55cn4c
垢版 |
2019/05/19(日) 16:51:21.34ID:8BTe2vpb
>>28
ええ、まったくの使い捨てでここ十年くらいやってますが、特定のスレに ideone/codepad のリンクを貼っていたのが、十年たってみると、当初は意図していなかった効用をもたらしてくれているんですね
0032デフォルトの名無しさん
垢版 |
2019/05/19(日) 19:37:16.01ID:lXFYvnLZ
>>5 Squeak Smalltalk

'日 本' encodeForHTTP "=> '%E6%97%A5%20%E6%9C%AC' "

'%E6%97%A5%20%E6%9C%AC' unescapePercents "=> '日 本' "
0035デフォルトの名無しさん
垢版 |
2019/05/19(日) 20:20:05.14ID:w9oOtt0P
>>9
Haskell

import Data.Char

main = (print.sumnum) 12

sumnum 0 = [0]
sumnum n |n < 0 = error "Please n >= 0 number"
sumnum n = take 5 [x | x <- [0..], n == sum [read [a]| a <- show x]]
0037 ◆QZaw55cn4c
垢版 |
2019/05/19(日) 20:30:36.06ID:8BTe2vpb
>>36
いいことを教えてもらいました、Java って uft-16 だけかとおもっていました…
0043 ◆QZaw55cn4c
垢版 |
2019/05/20(月) 00:00:59.23ID:V0YkyU13
>>41
小ネタの合間にめんどくさいものがポツポツあるかと >>11 とか
0045デフォルトの名無しさん
垢版 |
2019/05/20(月) 06:02:09.58ID:poyp5Kqc
漏れなんて、書き捨てのRuby のファイルが、100もある

いつも、Windows10 で、WSL, Ubuntu16.04 から、grep してる
0047デフォルトの名無しさん
垢版 |
2019/05/20(月) 07:53:09.19ID:oPixGX3C
お題
Excelのカラム名でHELLOからWORLDまで表示する
0048デフォルトの名無しさん
垢版 |
2019/05/20(月) 09:16:55.34ID:m4uUuPD/
>>11 問題1の斜めにしない直行正方形までは出た。

xの範囲= (94, 31) (850, 598) 差 756
yの範囲= (94, 31) (110, 927) 差 896
1辺= 896

直行正方形 (94, 31) (990, 31) (94, 927) (990, 927)
次はこれを傾けていくんだな。これがムズイ。
0053デフォルトの名無しさん
垢版 |
2019/05/20(月) 19:41:12.77ID:Nk0f6TzG
前スレの場合、みんなハッシュ(set)かソート使ってたじゃん
0054デフォルトの名無しさん
垢版 |
2019/05/20(月) 19:53:28.74ID:GKW/g8qb
>>53 コンパクトなコーディングはみんなほぼ同じだったね。

python smalltalk java

なんかプログラミング言語を見直しはじめたよ。
複雑にせずに根本を見つめるコーディングが出来る言語というのは素晴らしい。
0056デフォルトの名無しさん
垢版 |
2019/05/20(月) 19:58:48.02ID:HD7QqTZv
>>前スレ988 Perl5
https://mevius.5ch.net/test/read.cgi/tech/1549160513/988

sub p {
 $h = int $n/2;
 for ($i=2; $i<=$h; $i++) {
  $s[$i] = 1 unless exists $s[$i];
  do {$s[$i*$_] = 0 for 2..int $h/$i} if $s[$i];
 }
 @p = grep{$s[$_]} 2..$h;
}
sub f {
 my $i = shift;
 my $h = int $i/2;
 for $j (grep{$_ <= $h} @p) {
  return ($j, f($i/$j)) if 0 == $i % $j;
 }
 $i
}
for $n (qw{28 2002 216653}) {
 p;
 my %f; $f{$_}++ for f($n);
 @f = map{$_ . (1 < $f{$_} and "^$f{$_}")} sort{$a<=>$b} keys %f;
 $" = '+';
 print "$n => @f\n";
}

実行
~ $ perl 13_988.pl
28 => 2^2+7
2002 => 2+7+11+13
216653 => 216653
0057デフォルトの名無しさん
垢版 |
2019/05/20(月) 20:01:05.70ID:oKvxv21R
setにぶちこんで重複削除、リストにしてソートしてマップの値の方にインデックス入れて最後にそのマップ使って出して完成
0058デフォルトの名無しさん
垢版 |
2019/05/20(月) 20:02:09.53ID:oKvxv21R
ゆっくり書いてたら間にたくさんの書き込みが入った。
俺のことは忘れてくれ。
0059デフォルトの名無しさん
垢版 |
2019/05/20(月) 20:08:45.44ID:HD7QqTZv
>>56 スマソ、ケアレスミスった、繋ぐ演算子は+ => *だた…orz
sub p {
 $h = int $n/2;
 for ($i=2; $i<=$h; $i++) {
  $s[$i] = 1 unless exists $s[$i];
  do {$s[$i*$_] = 0 for 2..int $h/$i} if $s[$i];
 }
 @p = grep{$s[$_]} 2..$h;
}
sub f {
 my $i = shift;
 my $h = int $i/2;
 for $j (grep{$_ <= $h} @p) {
  return ($j,f($i/$j)) if 0 == $i % $j;
 }
 $i
}
for $n (qw{28 2002 216653}) {
 p;
 my %f; $f{$_}++ for f($n);
 @f = map{$_ . (1 < $f{$_} and "^$f{$_}")} sort{$a<=>$b} keys %f;
 $" = '*';
 print "$n => @f\n";
}

実行
~ $ perl 13_988.pl
28 => 2^2*7
2002 => 2*7*11*13
216653 => 216653
0063デフォルトの名無しさん
垢版 |
2019/05/21(火) 23:09:46.41ID:Arl7g85c
あなたが解けない C/C++/Java/C#/JavaScript の問題を有償で片付けるスレッドです
0064デフォルトの名無しさん
垢版 |
2019/05/21(火) 23:10:51.22ID:Arl7g85c
有償で片付けるスレッドに貼り付けるのはよろしくないね
有償で片付けてほしくて出題してるわけじゃないでしょ
問題の窃盗だよ
0065デフォルトの名無しさん
垢版 |
2019/05/21(火) 23:21:22.29ID:GF2ZpO+x
>>59
Perlは配列に対するexistsやdefinedは呼び出せるが振る舞いは不明確で「強く」非推奨となっているので
この場合では問題なくとも@pはリストではなく代わりにハッシュ%pを使って実装するべきだった
0067デフォルトの名無しさん
垢版 |
2019/05/21(火) 23:56:06.27ID:Jac4P34c
>>64
バカチョンには何を言っても無駄だと思うよ
聞く耳持たない分からず屋の馬鹿だからバカチョンなんだから
0068デフォルトの名無しさん
垢版 |
2019/05/22(水) 00:03:24.91ID:qz4w5gXY
>>64
>>27に理由が書かれていたが、一ヶ所に纏めておくと便利だなんてのは個人の都合であって、他の人にはわざわざ間接参照を強いることになるのだから、ほんとに身勝手な奴だと思う。

>>27
纏めておくのは他所で勝手にやれ、このスレにはコードだけを貼れよ。お前の手間なぞ知ったことではない。
0071デフォルトの名無しさん
垢版 |
2019/05/22(水) 01:20:05.57ID:34FbFmyD
>>70
それは絶対にやらないんじゃね
奴は自分のことしか考えてないから
だから自己愛
永遠に人から煙たがられる存在
0072デフォルトの名無しさん
垢版 |
2019/05/22(水) 01:29:50.95ID:BQdyZ7fR
>>11 は、多角形の中のドットの内外判定問題と言うのが確立されてるみたいね。
色んな方法があるみたいだが、簡単なのは、
Crossing Number Algorithm
らしい、ググってみると結構コンパクトなコード。
他も見てみたが、問題は境界線上にある点は多角形外と判定する事。

だから、そのままのロジックに手を入れないとした場合、使う側としてどう解決したら良いんだろう。
直行正方形を1ドットずつ大きくしてから回転させる?

それとも、多角形の中の多角形問題の方が適してるのかな?

この問題は結構勉強になる。 問題のイメージを掴むために、図形表示までやり始めたよ。 表示するとより楽しくなる。
0073デフォルトの名無しさん
垢版 |
2019/05/22(水) 01:32:14.02ID:BQdyZ7fR
>>71 そこまで悪い人間では無さそうだけどな、おだてれば猿も木に登るタイプだとみた。
高い木に登ってもらおう。
0074デフォルトの名無しさん
垢版 |
2019/05/22(水) 01:33:07.52ID:57KmKoFr
ググラないで考えようとしていたけど、
ヒントを目にしてしまった気分
いやべつにいいけどさ
0075デフォルトの名無しさん
垢版 |
2019/05/22(水) 01:34:42.74ID:7yGywXQG
Q. クソ問題とは何ですか?
A. 問題の解釈を巡って議論や煽り合いが10レス以上続く、バカが投稿した不備のある問題のことです。
0076デフォルトの名無しさん
垢版 |
2019/05/22(水) 04:38:05.31ID:qmHT8WH/
>>47 Ruby
("HELLO".."WORLD").each{|v| puts v}
0079デフォルトの名無しさん
垢版 |
2019/05/22(水) 10:43:49.16ID:qmHT8WH/
>>9 Ruby

def sumnum(n)
(0..4).map{|i| ("1"*n +"0"*i).to_i}
end
0080デフォルトの名無しさん
垢版 |
2019/05/22(水) 12:02:59.73ID:75T3S5z+
>>78  
Windows じゃないと動かないようだけど見やすいようにideonに張ってみた。
https://ideone.com/gJVREH

凸包と言うんだね。

2次元の凸包を求めるアルゴリズムと応用について
https://matsu7874.hatenablog.com/entry/2018/12/17/025713
凸包(convex hull)とは,与えられた点をすべて包含する最小の凸多角形(凸多面体)のこと.

--------
凸包が求められても難しいね。 凸包内の点を削除して計算時間を削減できる効果はあるかもしれないけど。
0081デフォルトの名無しさん
垢版 |
2019/05/22(水) 12:11:47.61ID:/472uU17
凸包が求められれば、頂点の並びも整列するので
形状を分割して余弦定理とかから導けないかなって思ったんだよね
0082デフォルトの名無しさん
垢版 |
2019/05/22(水) 12:13:57.61ID:pwChZnOT
>>47
画面の幅が足りなくて表示できません。
0083デフォルトの名無しさん
垢版 |
2019/05/22(水) 12:34:28.61ID:/472uU17
ちなみに、最小を求めるだけならある角度から見た凸包の一次元への投影と、直交する角度からの一次元への投影を180度回しながら調べれば出せると思うけど、分割の粒度の問題で、本当に最小が取れる保証はないね
0084デフォルトの名無しさん
垢版 |
2019/05/22(水) 13:45:45.60ID:pwChZnOT
>>76
試しに Perl でも 文字列 .. 文字列 をやってみたらできたよ。
こんなことできたとは。知らないまま20年以上使ってたよ。w
008550
垢版 |
2019/05/22(水) 19:14:59.08ID:1CosvZF6
>前スレの920
頭を使った。Ruby で、

str = "-6 3 9 5 3 -7"

original_ary = str.split.map!( &:to_i ) # 各要素は整数型
hash = original_ary.each_with_object( { } ) { | num, h | h[ num ] = true }

sorted_ary = hash.sort # キーでソートする
#=> [[-7, true], [-6, true], [3, true], [5, true], [9, true]]

# Enumerator#with_index(offset = 0)
sorted_hash = sorted_ary.each.with_index( 1 ) { | elem, idx | elem[ 1 ] = idx }.to_h

# p sorted_ary
#=> [[-7, 1], [-6, 2], [3, 3], [5, 4], [9, 5]]

# p sorted_hash
#=> {-7=>1, -6=>2, 3=>3, 5=>4, 9=>5}

results = original_ary.map{ | num | sorted_hash[ num ] }
puts results.join( " " ) #=> 2 3 5 4 3 1
0086 ◆QZaw55cn4c
垢版 |
2019/05/22(水) 19:16:47.93ID:Kujyr1dD
>>70-71
アンカーが多すぎると投稿できないのです、ただそれだけです
0087 ◆QZaw55cn4c
垢版 |
2019/05/22(水) 19:17:22.29ID:Kujyr1dD
>>73
>おだてれば猿も木に登るタイプだとみた。
痛いところを突きますね…
008850
垢版 |
2019/05/22(水) 19:26:33.00ID:1CosvZF6
>2 3 5 4 3 1

これが、
2 3 6 5 3 1

みたいに、4 が無くなる・飛ばされるランキングだと、もっとややこしい!w
0089デフォルトの名無しさん
垢版 |
2019/05/23(木) 09:23:03.57ID:mvOL8yN3
前スレの920 Ruby



def f(a)
b={}
a .dup.sort.each{|v|b[v]=b.size+1 if not b.key v}
a.map{|v|b[v]}
end

p f([-6,3,9,5,3,-7])
[2, 3, 5, 4, 3, 1]
0090デフォルトの名無しさん
垢版 |
2019/05/23(木) 12:32:00.03ID:vYeVJ6FZ
>>34
>>79

一休さんみたいなトンチの効いた回答で、それはそれで楽しめました。

改めて問題を書き直します。

各桁を足し合わせたら引数で与えられた数になる数の集合全体から小さい順に(可能なら=0対策)5個返す関数を作れ。

例:
sumnum 12
> [39,48,57,66,75] <- 3 + 9 = 12, 4 + 8 = 12, 5 + 7 = 12, 6 + 6 = 12, 7 + 5 = 12
0091デフォルトの名無しさん
垢版 |
2019/05/23(木) 12:33:09.81ID:vYeVJ6FZ
>>34>>15の間違い
0092デフォルトの名無しさん
垢版 |
2019/05/23(木) 13:50:07.86ID:qjdiTxTD
苗字で漢字の「口」を「くち」ではなく「ぐち」と読むのは
井口、矢口、田口の3つだけ
これマメな
0096デフォルトの名無しさん
垢版 |
2019/05/23(木) 18:37:52.11ID:TjazBdz3
>>90
Haskell

import Data.Char要らんかった。
take 5も問題と違うけど外に追い出した方が応用効きそう。

main = (print.take 5.sumnum) 12

sumnum 0 = [0]
sumnum n |n < 0 = error "Please n >= 0 number"
sumnum n = [x | x <- [1..], n == sum [read [a]| a <- show x]]


>>95
OCamlで無限リスト処理どうすんだろと疑問だったので、後で精読させて頂きますm(_ _)m
0098デフォルトの名無しさん
垢版 |
2019/05/23(木) 19:39:17.51ID:4YO7mLFH
>>97 もう相手にすんな。お題にするなら、

その9つの名前の読み仮名のあいうえお順に並べよ。

谷口・関口・合口・相口・藍口・青口・赤口・秋口・明口

読み仮名を持ってくるのが難しそうだけどな。
0099デフォルトの名無しさん
垢版 |
2019/05/23(木) 21:02:26.03ID:W0nkxFNY
aを要素の型がIntである長さNの配列、k、cを型がIntである変数とする。
{P}a[a[k]]=c;{a[a[k]]!=c}
Hoare tripleが成立するためのなるべく弱いPを示せ
0100 ◆QZaw55cn4c
垢版 |
2019/05/23(木) 21:06:01.11ID:QGT5qlDg
>>99
教えてください
P は何ですか?
{ } とは何を表しているのですか?

>{P}a[a[k]]=c;{a[a[k]]!=c}
0102デフォルトの名無しさん
垢版 |
2019/05/23(木) 21:38:26.52ID:iqEot/XY
sumnum、引数に10000とか与えたら答え返ってこなさそう
引数に1億とかは文字列長が千万とかになるから無理でも仕方ないけど、1万位は対応したいね
0104デフォルトの名無しさん
垢版 |
2019/05/23(木) 23:45:44.19ID:iqEot/XY
>>103 知らない言語ばかりでよく読めてないんだが、今までの提出って1から順に試してね?
それだと当然結果が返ってこないが
違ったらすまん
0106デフォルトの名無しさん
垢版 |
2019/05/24(金) 00:38:02.83ID:3viueN7b
>>92は「必ずレスがもらえるレス」として有名な文らしいな
案の定わんさかレスの付いてること
0109デフォルトの名無しさん
垢版 |
2019/05/24(金) 02:55:43.78ID:/EuQv4hQ
>>108 この凸包図を眺めてると、正解の正方形は 左辺の一番長い線を1辺とした正方形になりそうだが、それをどうやって求めるのか。

How to find the minimum-area-rectangle (MAR) fitted on the given points?
https://gis.stackexchange.com/questions/22895/finding-minimum-area-rectangle-for-given-points

最初に書いた人は、凸包を求めて重心を中心として1度ずつ回転させるやり方を考えたらしいが、下の方で良い解法のコメントが付いてた。

https://i.stack.imgur.com/ExZl3.png

少しずつ回転させるのではなくて、長方形の1辺は必ず凸包の辺のどれかと重なってるはずだから、凸包の辺の角度だけをとって試せば良いとのこと。
これなら重心を求める必要もないし、時間はかからない。

長方形が求まったら、座標系の中に入る正方形にすれば良いがはみ出してたら、参考解かな。

このアルゴリズムは、
The algorithm you are looking for is known in polygon generalisation as "smallest surrounding rectangle".
凸包最小長方形の解法とでも言えば良いのかな。
0111デフォルトの名無しさん
垢版 |
2019/05/24(金) 09:32:40.58ID:0g5oPW7D
今回のアルゴリズムは、最小の正方形を求める方法だけじゃなくて、グラフの境界との交差判定もあるから
最小の求め方だけではなく、2番め以降についても正しく判定できないといけない上に、回答が一つに定まらない可能性もあるんだよね
0112デフォルトの名無しさん
垢版 |
2019/05/24(金) 09:46:10.43ID:SalRbGaI
与えられた点を全て含む凸包全体からなる集合の濃度は明らかに連続体濃度なんだから2番目なんて存在しないぞ
0115デフォルトの名無しさん
垢版 |
2019/05/24(金) 11:52:18.57ID:MR3FxfYE
>>111 1辺から正方形を作る場合は、その正方形が全ての凸包の頂点を全て含むような大きさでなければならない。
この場合6辺あるから、そのような6つの正方形を作ってその中の最小のものを求めることになる。

面倒なのはそれが座標系に入らないといけないから場合によっては辺に平行移動しないといけないかも知れない。
すると、>>112 の言うように正方形の位置は変わるかもしれないけど、辺の長さが合ってれば正解だろうね。
(この場合は座標系に入るだろうからとりあえずは平行移動は考えないでも良いかも)
0116デフォルトの名無しさん
垢版 |
2019/05/24(金) 12:12:24.29ID:MR3FxfYE
>>110 どんな凸包体でも求まるよ。 1辺の長さが凸包体の辺の長さと一致させるわけじゃないよ。

全ての頂点を含む直方体を作る。 この求め方も工夫が必要そう。
1辺を伸ばした直線上に全ての頂点から垂線を引いて、一番外の距離を直方体の1辺とするんだろうな。
同じように他辺も求める。
0117デフォルトの名無しさん
垢版 |
2019/05/24(金) 12:51:12.25ID:Nda2hmui
>>116
雑な書き殴りですまん
https://i.imgur.com/v8rWTSf.png

さらにややこしいのは、凸包の頂点が正方形の辺上に位置して、
頂点に存在しないことのほうが多いのも難くする要因の一つ
0119デフォルトの名無しさん
垢版 |
2019/05/24(金) 18:00:01.45ID:ZpEEE6+U
>>11 色々見たけど、画像認識の境界を探す為にある程度人気のある話題みたいだが、完全を求めるのではなく、だいたいで良いからスピードの速いのが良いとしてるみたいだね。 境界自体があやふやなものだし。

厳密にやるとしても、長方形と正方形ではかなり条件が違う。

全ての点が正方形に入るのなら、一つの候補は凸包の対角上の点が一番離れているところを正方形の対角とした正方形が一つの候補ではないだろうか。
直交正方形が最大だからそこまでを調べれば良いけど、それだけをしらみつぶしに調べてどれだけ時間がかかるかだな。
それをはみ出る点がある場合にどうゴニョゴニョするかだけど、条件が絞れればスピードは速くなる。

一般的にはポイント数は膨大な数だから、条件を絞り込む方法が重要になりそう。


しかし、こんな例題はどこにでもありそうで殆どサンプルがないのは時間がかかりすぎて簡単に試せないのかな、今回はポイント数が少ないからそれほどではないとは思うけど。
0120デフォルトの名無しさん
垢版 |
2019/05/24(金) 18:05:08.54ID:ZpEEE6+U
>>119 文章が変な順になっててごめん。

全ての点が正方形に入るのなら、一つの候補は凸包の対角上の点が一番離れているところを正方形の対角とした正方形が一つの候補ではないだろうか。

それをはみ出る点がある場合にどうゴニョゴニョするかだけど、条件が絞れればスピードは速くなる。

直交正方形が最大だからそこまでを調べれば良いけど、それだけをしらみつぶしに調べてどれだけ時間がかかるかだな。
0121デフォルトの名無しさん
垢版 |
2019/05/24(金) 18:27:30.58ID:ukAKIdqH
計算両を優先するなら、座標軸を基準にとって大雑把に取るべきじゃないのかな
これなら、ゲームのコリジョン検出で使われる方法そのままだし
0122デフォルトの名無しさん
垢版 |
2019/05/24(金) 18:52:18.42ID:U6fsa1pB
点の数は関係なくね?
任意の3点を選んでその内部にある点は無いものとして考えても同じなんだから
0123デフォルトの名無しさん
垢版 |
2019/05/24(金) 19:02:15.89ID:U6fsa1pB
いや、関係あるか
頂点のめちゃくちゃ多い凸多角形になったら計算量明らかに増えるもんな
0124デフォルトの名無しさん
垢版 |
2019/05/25(土) 18:51:08.08ID:CqCnLPQm
>>11 なんかかなりの難問に思えてきたな。 解法への足がかりが見えない。 凸包までは比較的簡単にたどり着いたけどそれからが闇の中。
凸包の重心が何か使えるだろうか?

最小包含円 という言葉もあるようだが、少なくとも 正方形の辺はこの円の直径以下。
0130デフォルトの名無しさん
垢版 |
2019/05/26(日) 01:40:13.82ID:y3Cc4Dz0
以下はオレなりに考えた仮説
1)2点で正方形の内側に接するのは何らかの平べったい形、対角にて頂点が接するので45°
2)3点で接するのは、細長い三角形あるいはそれに準じた形、角度の計算は…?不明
 または凸包の一辺が正方形の辺に接する形
3)4点で接するのは、細長い三角形あるいはそれに準じた形、角度の計算は…?不明
 または凸包の一辺が正方形の辺に接する形
4)5点以上で接する場合は、凸包の一辺が正方形の辺に接する

「対角にて頂点が接する形の角度は45°」
「凸包の一辺が正方形の辺に接する形は凸包の辺の角度」
これらは角度が分かるので回転変化・逆変換を使って
外側の最小の斜め正方形の候補を探索することは可能だが、
角度が良く分からない形の解法が、まだ見出せていない
0131デフォルトの名無しさん
垢版 |
2019/05/26(日) 01:44:08.13ID:y3Cc4Dz0
凸包の一辺が正方形の辺に接するおよび二点が対角に接する場合に限った解法
なら難しくないんだがな…
0133130
垢版 |
2019/05/26(日) 17:27:59.46ID:XOxN6P/y
>>11 外側の正方形 Perl5、但し>>130>>131の「凸包の一辺が正方形の辺に接する」または「細い菱形のような形が
正方形の対角2点で接する」場合について求てみた。凸包を求める処理は略し、二点間の辺を総当りで計算している。
use List::Util qw{min max pairkeys pairvalues};
@s=qw{136 577 110 927 472 199 157 808 388 598 94 31 388 157 325 409 787 897 850 598};
@X = pairkeys @s; @Y = pairvalues @s;
sub sp {$_[0]*$_[2] + $_[1]*$_[3]}
sub rt {
 @e = (cos $th, -sin $th); @f = (sin $th, cos $th);
 my @x = map{sp @e, $X[$_], $Y[$_]} 0..$#X;
 my @y = map{sp @f, $X[$_], $Y[$_]} 0..$#Y;
 @x = (min(@x), max(@x)); @y = (min(@y), max(@y));
 $h = (max $x[1] - $x[0], $y[1] - $y[0]) / 2;
 $cx = ($x[1] + $x[0]) / 2; $cy = ($y[1] + $y[0]) / 2;
 @x = ($cx - $h, $cx + $h); @y = ($cy - $h, $cy + $h);
 ($e[1], $f[0]) = (-$e[1], -$f[0]);
 @x = map{sp @e, $x[$_], $y[$_]} 0..1;
 @y = map{sp @f, $x[$_], $y[$_]} 0..1;
 @x = (min(@x), max(@x)); @y = (min(@y), max(@y));
 (\@x, \@y, 2*$h) }
for $i (0..@X-2) { for $j ($i+1..$#X) {
 ($dx, $dy) = ($X[$j] - $X[$i], $Y[$j] - $Y[$i]);
 ($dx, $dy) = (-$dx, -$dy) if $dx < 0;
 $l = sqrt($dx*$dx + $dy*$dy);
 $th = $dx > abs($dy) ? -atan2($dy, $dx) : atan2($dx, $dy);
 ($X, $Y, $w) = &rt;
 push @t, +{i,$i,j,$j,dx,$dx,dy,$dy,l,$l,th,$th,X,$X,Y,$Y,w,$w};
 $th += 3.14159265358979/4; ($X, $Y, $w) = &rt;
 push @t, +{i,$i,j,$j,dx,$dx,dy,$dy,l,$l,th,$th,X,$X,Y,$Y,w,$w};
} }
@t = sort{$a->{w}<=>$b->{w}} grep{0<=$_->{X}[0]and$_->{X}[1]<=999 and 0<=$_->{Y}[0]and$_->{Y}[1]<=999} @t;
do {@x = @{$t[$_]->{X}}; @y = @{$t[$_]->{Y}};
 printf"%d: (%7.3f, %7.3f)-(%7.3f, %7.3f): w=%3.3f\n",$_+1,$x[0],$y[0],$x[1],$y[1],$t[$_]->{w}} for 0..5;
0134デフォルトの名無しさん
垢版 |
2019/05/26(日) 17:29:47.07ID:XOxN6P/y
>>133 の実行例

~ $ perl 14_11.pl
1: ( 48.607, 27.043)-(863.062, 983.177): w=891.576
2: ( 45.920, 20.484)-(869.713, 849.356): w=892.353
3: ( 32.627, 29.170)-(901.066, 949.457): w=895.142
4: ( 24.000, 31.000)-(920.000, 927.000): w=896.000
5: ( 24.000, 31.000)-(920.000, 927.000): w=896.000
6: ( 14.845, 32.823)-(931.567, 907.397): w=896.130


検算してないので、もしバグっていたらゴメンチャイ、(ゝω・) テヘペロ
0135デフォルトの名無しさん
垢版 |
2019/05/26(日) 17:38:51.62ID:XOxN6P/y
>>133 スマソ、「正方形の4点の座標を示せ」と書かれていたので、出力処理を少し修正
use List::Util qw{min max pairkeys pairvalues};
@s=qw{136 577 110 927 472 199 157 808 388 598 94 31 388 157 325 409 787 897 850 598};
@X = pairkeys @s; @Y = pairvalues @s;
sub sp {$_[0]*$_[2] + $_[1]*$_[3]}
sub rt {
 @e = (cos $th, -sin $th); @f = (sin $th, cos $th);
 my @x = map{sp @e, $X[$_], $Y[$_]} 0..$#X;
 my @y = map{sp @f, $X[$_], $Y[$_]} 0..$#Y;
 @x = (min(@x), max(@x)); @y = (min(@y), max(@y));
 $h = (max $x[1] - $x[0], $y[1] - $y[0]) / 2;
 $cx = ($x[1] + $x[0]) / 2; $cy = ($y[1] + $y[0]) / 2;
 @x = ($cx - $h, $cx + $h); @y = ($cy - $h, $cy + $h);
 ($e[1], $f[0]) = (-$e[1], -$f[0]);
 @x = map{sp @e, $x[$_], $y[$_]} 0..1;
 @y = map{sp @f, $x[$_], $y[$_]} 0..1;
 @x = (min(@x), max(@x)); @y = (min(@y), max(@y));
 (\@x, \@y, 2*$h) }
for $i (0..@X-2) { for $j ($i+1..$#X) {
 ($dx, $dy) = ($X[$j] - $X[$i], $Y[$j] - $Y[$i]);
 ($dx, $dy) = (-$dx, -$dy) if $dx < 0;
 $l = sqrt($dx*$dx + $dy*$dy);
 $th = $dx > abs($dy) ? -atan2($dy, $dx) : atan2($dx, $dy);
 ($X, $Y, $w) = &rt;
 push @t, +{i,$i,j,$j,dx,$dx,dy,$dy,l,$l,th,$th,X,$X,Y,$Y,w,$w};
 $th += 3.14159265358979/4; ($X, $Y, $w) = &rt;
 push @t, +{i,$i,j,$j,dx,$dx,dy,$dy,l,$l,th,$th,X,$X,Y,$Y,w,$w};
} }
@t = sort{$a->{w}<=>$b->{w}} grep{0<=$_->{X}[0]and$_->{X}[1]<=999 and 0<=$_->{Y}[0]and$_->{Y}[1]<=999} @t;
do {@x = @{$t[$_]->{X}}; @y = @{$t[$_]->{Y}};
 printf"%d: (%6.3f, %6.3f), (%7.3f, %6.3f), (%6.3f, %7.3f), (%7.3f, %7.3f): w=%3.3f\n",
  $_+1,$x[0],$y[0],$x[1],$y[0],$x[0],$y[1],$x[1],$y[1],$t[$_]->{w}} for 0..5;
0136デフォルトの名無しさん
垢版 |
2019/05/26(日) 17:40:00.54ID:XOxN6P/y
>>135 実行結果

~ $ perl 14_11.pl
1: (48.607, 27.043), (863.062, 27.043), (48.607, 983.177), (863.062, 983.177): w=891.576
2: (45.920, 20.484), (869.713, 20.484), (45.920, 849.356), (869.713, 849.356): w=892.353
3: (32.627, 29.170), (901.066, 29.170), (32.627, 949.457), (901.066, 949.457): w=895.142
4: (24.000, 31.000), (920.000, 31.000), (24.000, 927.000), (920.000, 927.000): w=896.000
5: (24.000, 31.000), (920.000, 31.000), (24.000, 927.000), (920.000, 927.000): w=896.000
6: (14.845, 32.823), (931.567, 32.823), (14.845, 907.397), (931.567, 907.397): w=896.130

検算してないので、もしバグっていたらゴメンチャイ、(ゝω・) テヘペロ
0138デフォルトの名無しさん
垢版 |
2019/05/26(日) 18:33:59.00ID:XOxN6P/y
>>11 外側の正方形 Perl5 凸包の辺が正方形の辺に接するまたは対角二点で接する場合、>>135の露骨なバグ一個修正
use List::Util qw{min max pairkeys pairvalues};
@s=qw{136 577 110 927 472 199 157 808 388 598 94 31 388 157 325 409 787 897 850 598};
@X = pairkeys @s; @Y = pairvalues @s;
sub sp {$_[0]*$_[2] + $_[1]*$_[3]}
sub rt {
 @e = (cos $th, -sin $th); @f = (sin $th, cos $th);
 my @x = map{sp @e, $X[$_], $Y[$_]} 0..$#X;
 my @y = map{sp @f, $X[$_], $Y[$_]} 0..$#Y;
 @x = (min(@x), max(@x)); @y = (min(@y), max(@y));
 $h = (max $x[1] - $x[0], $y[1] - $y[0]) / 2;
 $cx = ($x[1] + $x[0]) / 2; $cy = ($y[1] + $y[0]) / 2;
 @x = ($cx - $h, $cx + $h, $cx - $h, $cx + $h);
 @y = ($cy - $h, $cy - $h, $cy + $h, $cy + $h);
 ($e[1], $f[0]) = (-$e[1], -$f[0]);
 @x = map{sp @e, $x[$_], $y[$_]} 0..3;
 @y = map{sp @f, $x[$_], $y[$_]} 0..3;
 (\@x, \@y, 2*$h) }
for $i (0..@X-2) { for $j ($i+1..$#X) {
 ($dx, $dy) = ($X[$j] - $X[$i], $Y[$j] - $Y[$i]);
 ($dx, $dy) = (-$dx, -$dy) if $dx < 0;
 $l = sqrt($dx*$dx + $dy*$dy);
 $th = $dx > abs($dy) ? -atan2($dy, $dx) : atan2($dx, $dy);
 ($X, $Y, $w) = &rt;
 push @t, +{i,$i,j,$j,dx,$dx,dy,$dy,l,$l,th,$th,X,$X,Y,$Y,w,$w};
 $th += 3.14159265358979/4; ($X, $Y, $w) = &rt;
 push @t, +{i,$i,j,$j,dx,$dx,dy,$dy,l,$l,th,$th,X,$X,Y,$Y,w,$w};
} }
@t = sort{$$a{w}<=>$$b{w}} grep{0<=min@{$_->{X}}and max@{$_->{X}}<=999 and 0<=min@{$_->{Y}}and max@{$_->{Y}}<=999} @t;
do {@x = @{$t[$_]{X}}; @y = @{$t[$_]{Y}};
  printf"%d: (%7.3f,%7.3f), (%7.3f,%7.3f), (%7.3f,%7.3f), (%7.3f,%7.3f): w=%7.3f, th=%7.3f°\n",
   $_+1,$x[0],$y[0],$x[1],$y[1],$x[2],$y[2],$x[3],$y[3],$t[$_]{w},$t[$_]{th}*180/3.14159265358979} for 0..4;
0139デフォルトの名無しさん
垢版 |
2019/05/26(日) 18:37:35.18ID:XOxN6P/y
>>138 実行例

~ $ perl 14_11.pl
1: ( 32.627, 29.170), (927.382, 55.475), ( 6.310,923.152), (901.066,949.457): w=895.142, th= -1.685°
2: (920.000,927.000), ( 24.000,927.000), (920.000, 31.000), ( 24.000, 31.000): w=896.000, th=180.000°
3: ( 24.000, 31.000), (920.000, 31.000), ( 24.000,927.000), (920.000,927.000): w=896.000, th= 0.000°
4: ( 14.845, 32.823), (910.733, 11.994), ( 35.680,928.226), (931.567,907.397): w=896.130, th= 1.332°
5: ( 18.819, 32.332), (914.819, 16.335), ( 34.819,928.046), (930.819,912.049): w=896.143, th= 1.023°

ちゃんと検算してないので、もしまだバグがいたらゴメンチャイ、(ゝω・) テヘペロ

検算方法考えた方がいいのかも。ちなみにwは正方形の幅、thは回転各[deg]

>>11 の内側の正方形についてはまだ考えていない。
0140デフォルトの名無しさん
垢版 |
2019/05/26(日) 20:05:21.06ID:MaF2nVvH
>>11 おもろいな、初級問題だと文法の練習としてそれなりに勉強になる。
こう言うのはそれを超えていろんなパッケージ/ライブラリを駆使することになるから一皮剥けて勉強になる。

解けるか解けないか判らないけど楽しんでる。

勿論こう言うのは、言語の問題ではなく、ロジックの問題だと解っているんだが、ヒントとなる数字を出せるのは言語の力にもよるからそれはそれなりに面白い。

図形は直感的に推論が正しいかどうか判るから面白い。
https://i.imgur.com/cCazfFe.jpg
凸包の重心は使えなさそうだな。

>>139 なんとなく変に感じるんだが。
https://i.imgur.com/3ioZWjZ.jpg

この場合の正方形の一辺は、左側の凸包の線そのものになると思うんだけど。
つまり、左下端が、( 94,31 )、上端が(110,927) にならないかな?
0144138
垢版 |
2019/05/26(日) 21:07:57.74ID:GCxYDy5d
>>140 図をありがとう

scriptを(94, 31) - (110, 927)の辺に傾けてこの角度における最小の正方形だけを計算するようなおして
計算したら
5: ( 18.819, 32.332), (914.819, 16.335), ( 34.819,928.046), (930.819,912.049): w=896.143, th= 1.023°
になりました。
0146デフォルトの名無しさん
垢版 |
2019/05/27(月) 03:33:47.20ID:ZlNUfz2v
>>11 1)のみ やってみた。

https://codepen.io/dokokade/full/WBzgrZ

※ 途中で完全にJavaScriptのお遊びになってしまった。
  (計算は別プログラムで、そのログを図にした)

一辺 = 890.70993168302
四点
x: [ 0.8027676391, 82.9114960624, 969.828819782, 887.7200913596]
y: [916.8907759982, 29.9734522778, 112.082180701, 998.9995044215]
0148デフォルトの名無しさん
垢版 |
2019/05/27(月) 12:17:08.10ID:g1o9JmK9
>>146 あ、でも 右上の頂点は y = 998.9995044215 となってるけど、
正確には y=999 とぶつからなければいけないよね。 少し誤差が大きすぎるような気がするけどこんなもの?
0151デフォルトの名無しさん
垢版 |
2019/05/28(火) 00:07:34.28ID:A9u6a3RO
>>145 凸包の一辺(94,31)-(110,927)のみに着目し、この辺が垂直となる様に座標を1.023°回転して
から点郡を囲む矩形領域を求め、その長方形を正方形になるように短い辺を伸ばす処理は省いて
長方形のまま元の座標系に逆変換し4頂点座標を見たところ、
use List::Util qw{min max};
use Math::Trig;
@X = qw{94 110}; # 787 850 472 388};
@Y = qw{31 927}; # 897 598 199 598};
sub sp {$_[0]*$_[2] + $_[1]*$_[3]}
for $i (0..@X-2) { for $j ($i+1..$#X) {
 ($dx, $dy) = ($X[$j] - $X[$i], $Y[$j] - $Y[$i]);
 ($dx, $dy) = (-$dx, -$dy) if $dx < 0;
 $th = $dx > abs($dy) ? -atan2($dy, $dx) : atan2($dx, $dy);
 @e = (cos $th, -sin $th); @f = (sin $th, cos $th);
 my @x = map{sp @e, $X[$_], $Y[$_]} 0..$#X;
 my @y = map{sp @f, $X[$_], $Y[$_]} 0..$#Y;
 @x = (min(@x), max @x); @y = (min(@y), max @y);
 $w = max($x[1] - $x[0], $y[1] - $y[0]);
 ($e[1], $f[0]) = (-$e[1], -$f[0]);
 @x = map{sp @e, $x[$_], $y[$_]} 0,1,0,1;
 @y = map{sp @f, $x[$_], $y[$_]} 0,0,1,1;
 #next if min@x<0 or 999<max@x or min@y<0 or 999<max@y;
 push @t, +{i,$i,j,$j,dx,$dx,dy,$dy,th,$th,X,[@x],Y,[@y],w,$w} } }
@t = sort{$$a{w}<=>$$b{w}} @t;
do {@x = @{$_->{X}}; @y = @{$_->{Y}};
 printf"%d: (%7.3f,%7.3f), (%7.3f,%7.3f), (%7.3f,%7.3f), (%7.3f,%7.3f): w=%7.3f, th=%7.3f°\n",
  ++$k,$x[0],$y[0],$x[1],$y[1],$x[2],$y[2],$x[3],$y[3],$$_{w},rad2deg $$_{th}} for @t;
~ $ perl 14_11_2.pl
1: ( 94.000, 30.990), (110.000, 30.990), ( 94.000,926.704), (110.000,926.704): w=896.143, th= 1.023°
となったので、今のところ計算は合っていると思う。おかしく感じたのは長方形を正方形になるように短い辺を伸ばした座標の
シフトによるものだと思う。しかし、この長方形⇒正方形補正が曲者で、より小さい正方形であるにもかかわらず長方形の
短辺を両側に均等に伸ばすと頂点が0〜999の範囲をこえてしまうものがあるらしく、不均等に伸ばすようにすれば
より小さい正方形を見出せるかもしれない。
0153デフォルトの名無しさん
垢版 |
2019/05/28(火) 00:16:35.63ID:eILR4MCH
>>150 外接円を描いてみたけど、利用方法を見つけられなかった。
むしろ [ 94 31] [787 897] の対角を直径とする最小包含円 からかな?
0154デフォルトの名無しさん
垢版 |
2019/05/28(火) 00:27:46.22ID:A9u6a3RO
以下は試作実験programと結果
@凸包の辺の角度にのみ傾ける(それ以外の角度は略) A長方形⇒正方形補正は略 B頂点座標が0〜999の範囲外も出力
use List::Util qw{min max}; use Math::Trig;
@X = qw{94 110 787 850 472 388}; @Y = qw{31 927 897 598 199 157};
sub sp {$_[0]*$_[2] + $_[1]*$_[3]}
for $i (0..@X-2) { for $j ($i+1..$#X) {
 ($dx, $dy) = ($X[$j] - $X[$i], $Y[$j] - $Y[$i]);
 ($dx, $dy) = (-$dx, -$dy) if $dx < 0;
 $th = $dx > abs($dy) ? -atan2($dy, $dx) : atan2($dx, $dy);
 @e = (cos $th, -sin $th); @f = (sin $th, cos $th);
 my @x = map{sp @e, $X[$_], $Y[$_]} 0..$#X;
 my @y = map{sp @f, $X[$_], $Y[$_]} 0..$#Y;
 @x = (min(@x), max @x); @y = (min(@y), max @y);
 $w = max($x[1] - $x[0], $y[1] - $y[0]);
 ($e[1], $f[0]) = (-$e[1], -$f[0]);
 @x = map{sp @e, $x[$_], $y[$_]} 0,1,0,1;
 @y = map{sp @f, $x[$_], $y[$_]} 0,0,1,1;
 #next if min@x<0 or 999<max@x or min@y<0 or 999<max@y;
 push @t, +{i,$i,j,$j,dx,$dx,dy,$dy,th,$th,X,[@x],Y,[@y],w,$w} } }
@t = sort{$$a{w}<=>$$b{w}} @t;
do {@x = @{$_->{X}}; @y = @{$_->{Y}};
 printf"%d: (%7.3f,%7.3f), (%7.3f,%7.3f), (%7.3f,%7.3f), (%7.3f,%7.3f): w=%7.3f, th=%7.3f°\n",
  ++$k,$x[0],$y[0],$x[1],$y[1],$x[2],$y[2],$x[3],$y[3],$$_{w},rad2deg $$_{th}} for @t[0..4];

1: (752.170,710.324), ( 94.000,710.324), (752.170, -8.662), ( 94.000, -8.662): w=873.451, th=168.102°
2: ( 70.342, 31.983), (863.100, 31.983), ( 70.342,891.839), (863.100,891.839): w=895.830, th= 2.537°
3: ( 94.000, 30.990), (855.637, 30.990), ( 94.000,913.391), (855.637,913.391): w=896.143, th= 1.023°
4: (699.348,547.478), ( 94.000,547.478), (699.348,-34.520), ( 94.000,-34.520): w=945.899, th=160.148°
5: ( 94.000, 29.184), (671.086, 29.184), ( 94.000,1007.681), (671.086,1007.681): w=978.102, th=-23.199°
真の極小解は中途半端な角度にあるのか…
0155146
垢版 |
2019/05/28(火) 00:38:23.09ID:dFqOFikP
>>148

146は、ヒュースリックス解だから、まだ小さくなると思う。
でも、あと1くらいだと思う
( これが厳密解を求めるやる気が、無くなる原因)

少しずるして、この問題に過剰最適化させて、
890.7003209442369にした。
https://codepen.io/dokokade/full/WBzgrZ
0156デフォルトの名無しさん
垢版 |
2019/05/28(火) 00:44:50.83ID:A9u6a3RO
>>154
これ、凸包の辺の角度にのみ傾けてない、凸包の全頂点の組み合わせエッジの角度に傾けている。
まいいや、大差ない
0158デフォルトの名無しさん
垢版 |
2019/05/28(火) 01:18:31.05ID:eILR4MCH
>>155 無理を言ってごめん、答えの誤差をなくすために、最終座標は整数の xy 座標に出来るかな。 中心からの距離を切り上げて整数にする感じになると思うけど。
0159デフォルトの名無しさん
垢版 |
2019/05/28(火) 01:33:00.26ID:A9u6a3RO
こういう問題って、極小・最小解にいたる連続的な解空間形成してなけりゃ収束計算もできないし
かといって解析的あるいはロジカルな求解法が見出せなけりゃ、最後はヒューリスティックあるいはランダムwalk
あるいはRISMみたいな外挿的に探索するしかないのだろうか…
ないんだろうなたぶん。そんなきがす
0160デフォルトの名無しさん
垢版 |
2019/05/28(火) 01:41:09.17ID:eILR4MCH
>>159 現実の世界でも、求める解は整数にすることが多いと思う。
画面のドット精度、工作機械の精度など整数と考えた方が良い。
現実的には整数解が求められないと、角を切り落としたりしかねない。
(許容誤差を加えた範囲を求めるのでも良いけど)

整数解にした方が、試行錯誤の時間も少なくなると思うからより現実的だと思う。 答えが一律に決まるし。
016150
垢版 |
2019/05/28(火) 13:42:19.32ID:tpS8MDSU
https://mevius.5ch.net/test/read.cgi/tech/1549160513/920

前スレの920の、ランク付けの問題で、

入力データ
-6 3 9 5 3 -7
出力・ランク
2 3 5 4 3 1

2 3 6 5 3 1

下のように、同値の場合は、同じランクにして、次のランクの間隔を空ける場合、
ランク3 が2つあるから、4が無くなって、次は、5に飛ぶ場合は、難しい!
0162デフォルトの名無しさん
垢版 |
2019/05/28(火) 16:43:58.97ID:C7xxE9sL
>>161
uniqしないだけ
0164デフォルトの名無しさん
垢版 |
2019/05/29(水) 15:51:03.59ID:PE9V8n6M
素因数分解する関数を作れ。
ただし2より小さい数は空のリスト(又は配列)を返す事とする。

例: factorization 150
>[2,3,5,5]
0167デフォルトの名無しさん
垢版 |
2019/05/29(水) 21:59:41.60ID:tGd6tVjg
>>164 Perl5、>>59 で書いたroutineを流用しています。

sub prime {
 $h = int $n/2;
 for ($i=2; $i<=$h; $i++) {
  $s[$i] = 1 unless exists $s[$i];
  do {$s[$i*$_] = 0 for 2..int $h/$i} if $s[$i];
 }
 @p = grep{$s[$_]} 2..$h;
}
sub factorization {
 my $i = shift;
 my $h = int $i/2;
 for $j (grep{$_ <= $h} @p) {
  return ($j, factorization($i/$j)) if 0 == $i % $j;
 }
 1 < $i ? $i : ();
}
$"=',';
for $n ((0, 1, 2, 150)) {
 prime;
 @f = factorization $n;
 print"$n => [@f]\n";
}

実行結果
~ $ perl 14_164.pl
0 => []
1 => []
2 => [2]
150 => [2,3,5,5]
0168デフォルトの名無しさん
垢版 |
2019/05/30(木) 18:43:19.57ID:vFLUPPTs
>>166
すでに既出だったとは。。。orz
0169デフォルトの名無しさん
垢版 |
2019/05/30(木) 18:45:09.99ID:vFLUPPTs
>>164
一応Haskell載せときます。

main = (print.factorization) 150

factorization n | n < 2 = []
factorization n = f n primes
where
f n (x:_) |n == x = [x]
f n (x:xs)|n `mod` x == 0 = x:f (n `div` x) (x:xs)
f n (_:xs) = f n xs

primes = sieve [2..]
where sieve (p:xs) = p:sieve [x | x <- xs, x `mod` p /= 0]
0184デフォルトの名無しさん
垢版 |
2019/05/31(金) 05:30:51.21ID:Rd2VdfQd
>>183
寝言はねえから言えよクズ
z^w := exp(w * log(z))
log(z) が多価関数なんだから一般にz^wも多価関数だっつーの
死ねよ雑魚が

https://en.wikipedia.org/wiki/Exponential_function
> We can then define a more general exponentiation:
>
> {\displaystyle z^{w}=e^{w\log z}} z^{w}=e^{w\log z}
> for all complex numbers z and w. This is also a MULTIVALUED function, even when z is real.
0185デフォルトの名無しさん
垢版 |
2019/05/31(金) 05:49:38.41ID:C3HpXD20
>>184
出典がwikiとかありえねーよwww
wikiにそう書いてあるからってそれが正しいとは限んねえだろバーカ
0186デフォルトの名無しさん
垢版 |
2019/05/31(金) 06:17:16.52ID:4Atryqh8
>>184
第一の意味での指数関数、つまり f′(z) = f(z), f(0)=1 を満たす f(z) = exp(z) は当然多価関数じゃない。

第二の意味での「指数関数」、つまり複素数の複素数乗 f(z, w) = z^w は、引用してくれたとおり exp の「逆関数」 log を使って f(z, w) = exp(w log z) と定義するけど、
log は主値を取るものとして(つまり定義域を制限した exp の真の意味での逆関数として)定義すれば log w も f(z, w) もちゃんとした関数になる。そうでなければどちらも多価関数になる。

多価関数って要は関数じゃない(写像ではない)から、少なくとも一般的な計算には使わないよね。多価の asin x や多価の √x なんて使わないでしょ?
0187デフォルトの名無しさん
垢版 |
2019/05/31(金) 06:53:54.48ID:BfGYI+kd
>>186
主値を取る場合はLogなりp.v. fなりきちんと明示するのが少なくとも解析屋の間ではルールだよ
他の分野の人は知らないけど
0188デフォルトの名無しさん
垢版 |
2019/05/31(金) 07:16:05.79ID:LXc8d8Er
>>170
> 歌を歌う
歌うには「歌を」と言う意味は含まれてないから歌を歌うと言うのは別におかしくないよ
> 舞を舞う
も同様
0190デフォルトの名無しさん
垢版 |
2019/05/31(金) 12:16:09.80ID:ihIFj/V/
>>188
和語として語源同一なんだけど。
意外なものでは「くさい」と「くそ」「明かり」と「開ける」も同一語源。
0191デフォルトの名無しさん
垢版 |
2019/05/31(金) 14:15:19.33ID:rnSTXr8b
数学の問題なんて、センター入試問題でも解いてこいよ。 手を抜きすぎだぞ。 もっと面白くひねれよ。
0192デフォルトの名無しさん
垢版 |
2019/05/31(金) 20:50:13.55ID:/Dlwa3kC
>>164
Haskellを元にPython。
素数じゃ無いと判定した時点でループ抜けるとかしたら、そこそこ速くなった。
https://ideone.com/3L1N23
0194デフォルトの名無しさん
垢版 |
2019/06/01(土) 05:45:08.23ID:uuPo6pHP
面白いお題がないかと文句を言う前に
進んで面白いお題を書きましょう
0195デフォルトの名無しさん
垢版 |
2019/06/02(日) 10:12:21.99ID:kAC27lYz
>>192 python sympy

from sympy import *
import time
time_sta = time.perf_counter()
ans=factorint(13999)
time_end = time.perf_counter()
print(ans,'{:.7f}ms'.format((time_end-time_sta)*1000))

#{13999: 1} 0.0283330ms

同じpython でも餅は餅屋なんだろうな。
因みに、13999**2 を求めると
#{13999: 2} 0.4635000ms

iPhone Xs Max Pythonista3.2 Python3.6.5 sympy 0.4.7.1
0196デフォルトの名無しさん
垢版 |
2019/06/02(日) 15:03:12.02ID:c9LZ9fJN
>>192>>164向けの回答としては問題ない。

しかし、一般的な素因数分解としては問題が。
大きな素数が対象のとき、実行時間がひどい結果になっている。
たとえば有名な素数1000000007(10億7)をやると....
(前スレ988の制約範囲内くらい、普通にできる形が望ましい)

pythonで手を抜いた一般的な素因数分解でも
10^12くらいは1秒以内に出る。(10^12+39が近場の素数)
0197195
垢版 |
2019/06/02(日) 18:27:22.13ID:Hxta4mKu
>>196 python sympy
{1000000007: 1} 0.2255000ms
0198195
垢版 |
2019/06/02(日) 18:41:56.81ID:Hxta4mKu
>>196 同一環境での比較。

n= 13999 ans= {13999: 1} time=0.0135830ms
>>192 を実行
n= 13999 ans= [13999] time=152.4304170ms
0199デフォルトの名無しさん
垢版 |
2019/06/03(月) 00:41:43.81ID:u5qwV1AY
>>198
192の解が一般解としてはひどいすぎるってことでしょ。
10億7どころか、百万台の素数もキツイ。
0202デフォルトの名無しさん
垢版 |
2019/06/03(月) 21:33:09.94ID:CuEu7mic
>>164
Kotlin
https://paiza.io/projects/65lAktSm6rjmcVdxSlaLSQ

ただループ回すだけじゃ芸がないと思って素数を返すイテレータのクラス作ってやってみた。
(素数をバッファリングもすればもっと無駄がなかったなとは思ったがそれはやってない)。
0204195
垢版 |
2019/06/04(火) 07:17:53.03ID:/ArpXH0n
>>201 jupyter で測ってみた。結構早い。

[1000000007]
CPU times: user 2.28 ms, sys: 0 ns, total: 2.28 ms
Wall time: 2.25 ms

[1000000000039]
CPU times: user 99.8 ms, sys: 0 ns, total: 99.8 ms
Wall time: 107 ms

[2, 3, 3, 5, 7, 11, 13, 17, 29]
CPU times: user 76 µs, sys: 0 ns, total: 76 µs
Wall time: 78.7 µs

[2, 3, 3, 5, 7, 11, 13, 17, 29, 1000000007]
CPU times: user 3.53 ms, sys: 0 ns, total: 3.53 ms
Wall time: 3.54 ms
0205デフォルトの名無しさん
垢版 |
2019/06/04(火) 07:56:52.47ID://1XsOfQ
素数は、平方根までの素数で割って、割り切れなければ素数だろ

[2,3,5,7,11,13...] みたいに、素数表に追加していく途中で、
例えば、103 なら、11 までの素数で割って、割り切れなければ素数

13以降の素数で割る必要はない

もし13で割り切れるなら、13 * n = 103
となり、n は、√103 よりも、小さくなるから、既に割り切れているはず!
0209デフォルトの名無しさん
垢版 |
2019/06/04(火) 10:23:22.04ID:prB+PlYz
>>185
間違いとも限らない。

書かれていることを鵜呑みにするのは間違いだが見もしないで頭ごなしに間違いと決めつけるのも間違い。
0210202
垢版 |
2019/06/04(火) 10:27:05.50ID:prB+PlYz
>>205
なるほど。暇があったらそれも考慮しよう。
0211デフォルトの名無しさん
垢版 |
2019/06/04(火) 11:04:03.94ID:Hzpqs43L
【速報】金券五百円分とすかいらーく優侍券をすぐもらえる    
https://pbs.twimg.com/media/D8I_lOtVUAE8t0O.jpg  
  
@ スマホでたいむばんくを入手   
A 会員登録を済ませる   
B マイページへ移動する     
C 招待コード→招待コードを入力する [Rirz Tu](スペース抜き)    
     
今なら更に4日18時までの登録で2倍の600円の紹介金を入手 
クオカードとすかいらーく優待券を両方ゲットできます。  
    
かんたんに入手できますのでご利用下さい    
0214デフォルトの名無しさん
垢版 |
2019/06/05(水) 02:49:29.97ID:TK4G9YGK
>>200 Ruby
# エスケープシーケンスが有効な環境
print "\e[1;1;H\e2" # "\ec"
while true
print 79.times.inject(''){|s| s += (rand(20) >= 19)? '|' : ' ' }, "\n\e[1T\eM"
sleep 0.1
end
0215デフォルトの名無しさん
垢版 |
2019/06/05(水) 19:02:11.80ID:xAyG9V/M
お題:2次元関数を図示したとき網目状になる関数を示せ。
0218デフォルトの名無しさん
垢版 |
2019/06/05(水) 20:26:27.13ID:Fd++qFdy
>>215
それは数学のお題では?関数の方を求めるんでしょ?図を画面に出すとかではなく。
0219214
垢版 |
2019/06/06(木) 05:58:02.66ID:6h02yf6h
>>200 Ruby
# 水はねを追加
require 'io/console'
Crow, Ccol = STDOUT.winsize
print "\e[0;0H"
lines = []
while true
line = ' ' * Ccol
rand(Ccol).div(8).times{ line[rand(Ccol)] = '|' }
lines << line
print "\e[0;0H#{line}\n\e[0;0H"
if lines.size >= Crow
line = lines.shift.tr('|','w')
print "\e[#{Crow};0H#{line}\e[0;0H"
end
sleep 0.1
print "\e[0;0H\eM"
end
0220デフォルトの名無しさん
垢版 |
2019/06/06(木) 18:09:53.98ID:Qxsak61t
お題

1/x + 1/2y + 1/3z = 4/3
を満たす、整数( x, y, z )の組み合わせを求めろ

ただし、x, y, z の範囲は、1 <= x, y, z <= 4 とする

答え
[ 1, 2, 4 ], [ 1, 3, 2 ], [ 2, 1, 1 ]
0221デフォルトの名無しさん
垢版 |
2019/06/06(木) 20:34:48.88ID:2PaE6Est
また数学か
0222デフォルトの名無しさん
垢版 |
2019/06/06(木) 20:50:52.65ID:ZTQEoQsZ
これは数学と言うより、コンピュータの問題じゃないかな。
IEEE754の理解が必要になると思う。
0223220
垢版 |
2019/06/06(木) 22:57:28.49ID:Qxsak61t
有理数・Rational クラスを使えば?

式を6倍しても良いけど
0227デフォルトの名無しさん
垢版 |
2019/06/07(金) 13:55:32.04ID:D45ggIzR
>>215
sin(x + y)*sin(x - y)=0
0229195
垢版 |
2019/06/07(金) 16:32:04.76ID:QdXw6XxC
>>228 馬鹿だろ。 6倍してみろ
0230デフォルトの名無しさん
垢版 |
2019/06/07(金) 16:36:23.22ID:CBwJTjr/
>>228
> コンピュータは1/3を計算するとき工夫がいる。
だからその工夫が>>223の言う
> 有理数・Rational クラスを使えば?
とか
> 式を6倍しても良いけど
だろ
数学的な問題は実数使っても解けないことが多いぞ
0233デフォルトの名無しさん
垢版 |
2019/06/07(金) 17:32:22.41ID:IXZHPSuO
等式を6xyz倍して、4の3乗通りの整数の組み合わせを代入して単純に比較するだけの話だよね
0235デフォルトの名無しさん
垢版 |
2019/06/07(金) 20:25:03.39ID:itc0IrgZ
お題:相異なる25個の英大文字が与えられるので、足りない1個を出力せよ

BCDEFGHIJKLMNOPQRSTUVWXYZ -> A
YIZFOADLMWCRUTGSVQKJEHNBP -> X
0238デフォルトの名無しさん
垢版 |
2019/06/08(土) 00:59:14.99ID:zvJkEDj7
>>235 Perl5

for $s (BCDEFGHIJKLMNOPQRSTUVWXYZ, YIZFOADLMWCRUTGSVQKJEHNBP) {
 @a = grep{0>index$s,$_} A..Z;
 print "$s -> @a\n";
}

$ perl 14_235.pl
BCDEFGHIJKLMNOPQRSTUVWXYZ -> A
YIZFOADLMWCRUTGSVQKJEHNBP -> X
0239デフォルトの名無しさん
垢版 |
2019/06/08(土) 01:04:50.07ID:zvJkEDj7
>>238 Pler5 >>238 よりもう少しコンパクトでsimpleに書けた

for $s (BCDEFGHIJKLMNOPQRSTUVWXYZ, YIZFOADLMWCRUTGSVQKJEHNBP) {
 print "$s -> ", grep{0>index$s,$_} A..Z, "\n";
}
0240デフォルトの名無しさん
垢版 |
2019/06/08(土) 04:54:26.27ID:t4bm4zRu
>>220
kotlinc
6倍して計算

>>> (1..4).forEach { x -> (1..4).forEach { y -> (1..4).forEach { z -> if (6.0/x+3*y+2*z==8.0) println("[$x, $y, $z]") }}}
[2, 1, 1]
>>>

答え一つだけのようだが、>>220の下に書いてある答えはなんだ?
0242220
垢版 |
2019/06/08(土) 05:51:26.61ID:0P3wY/7I
>>223
>式を6倍しても良いけど

間違い!
6xyz 倍する

x, 2y, 3z が、分母です!
0243デフォルトの名無しさん
垢版 |
2019/06/08(土) 06:35:13.06ID:nbnKD3nO
最初から曖昧な式を書いてる出題者が最大の悪意だろ
もう無視しろよこんなサイコパス
0246デフォルトの名無しさん
垢版 |
2019/06/08(土) 07:48:52.33ID:jHJxbMi0
お前らでも他人の悪口言うもんなんだな
0247デフォルトの名無しさん
垢版 |
2019/06/08(土) 10:21:44.01ID:831NYUH9
>>235 Pharo/Squeak Smalltalk

| alphabet |
alphabet := Character alphabet asUppercase.
alphabet difference: 'BCDEFGHIJKLMNOPQRSTUVWXYZ'. "=> 'A' "
alphabet difference: 'YIZFOADLMWCRUTGSVQKJEHNBP'. "=> 'X' "
0248デフォルトの名無しさん
垢版 |
2019/06/08(土) 11:01:33.46ID:CjDCyQh6
>>220 Pharo/Squeak Smalltalk

| set exp |
set := Set new.
(1 to: 4) asDigitsToPower: 3 do: [:combi |
combi permutationsDo: [:permu | set add: permu copy]
].
exp := [:x :y :z | 1/x + (1/(2*y)) + (1/(3*z))].
set select: [:permu | (exp valueWithArguments: permu) = (4/3)]

"=> a Set(#(2 1 1) #(1 3 2) #(1 2 4)) "
0249195
垢版 |
2019/06/08(土) 11:07:07.66ID:gSg6KwWS
>>235 python

import string

A26 = set(string.ascii_uppercase)
print(A26.difference(set('BCDEFGHIJKLMNOPQRSTUVWXYZ')).pop()) #-> A

print(A26.difference(set('YIZFOADLMWCRUTGSVQKJEHNBP')).pop()) #-> X
0250デフォルトの名無しさん
垢版 |
2019/06/08(土) 20:39:21.75ID:gCLo3iII
>>241
え?なんで?括弧なしで続けて書いたらそういう解釈にしかならんと思うが?
そうでないならその部分どう解釈するのが正解なの?
0251デフォルトの名無しさん
垢版 |
2019/06/08(土) 20:40:05.48ID:gCLo3iII
>>245
全体を6倍しているからだが?
0252デフォルトの名無しさん
垢版 |
2019/06/08(土) 20:41:05.12ID:gCLo3iII
>>242
それが分母ならちゃんと括弧書けよ。
0257デフォルトの名無しさん
垢版 |
2019/06/08(土) 23:59:56.19ID:t4bm4zRu
>>241
>>232のリンク先もそのようになっているようだが、見ていなかったか。
0258デフォルトの名無しさん
垢版 |
2019/06/09(日) 00:14:56.14ID:W8wtcQAp
>>235
AからZの文字コードの数値の総和から入力文字列の各文字の文字コードの総和を引けばいいね
0261デフォルトの名無しさん
垢版 |
2019/06/09(日) 00:19:22.44ID:OSjRKT39
むしろプログラマの世界で数式を書くなら、
1/(2*y) だろうな。
1/2y と書けば、普通は、(1/2) * y だろ。
0262デフォルトの名無しさん
垢版 |
2019/06/09(日) 00:24:01.37ID:SSgQq8CW
数学習った時も掛け算記号は省略できるとか習った覚えが。
あと、割り算と掛け算混ぜたときの結果は項の順番によらないかった覚えが。

寝る。
0264デフォルトの名無しさん
垢版 |
2019/06/09(日) 01:16:32.66ID:zgQq0a06
>>263
数式でも人が紙に書いたかのような表現が使えず1行に無理に押し込める形式にするのならそれなりの工夫が必要だ
0265デフォルトの名無しさん
垢版 |
2019/06/09(日) 01:59:59.85ID:RDMRCxQC
まず普通の人はあの表記を見ても迷わない
一京歩譲ったとして仮に迷ったとしても与えられた答えを代入すれば猿でも分かる
つまりいちゃもんつけてるのは猿未満
0266デフォルトの名無しさん
垢版 |
2019/06/09(日) 02:03:55.91ID:vJOouxE6
自演乙
0268220
垢版 |
2019/06/09(日) 05:40:38.30ID:rn4C+nSw
>>220
Ruby で、

ary = ( 1..4 ).to_a

# 直積・3重ループ
p ary.product( ary, ary ).select { |( x, y, z )|
Rational( 1, x ) + Rational( 1, 2 * y ) + Rational( 1, 3 * z ) == 4/3r }

#=> [[1, 2, 4], [1, 3, 2], [2, 1, 1]]
0269デフォルトの名無しさん
垢版 |
2019/06/09(日) 08:43:57.74ID:OSjRKT39
>>263 >コード書いたわけじゃなくて普通の数式やがな

普通の数式ってどこの世界での普通なんだ? 普通の数式ならそんな書き方はしないからな。
1/2y を普通の数式として解釈すれば、(1/2) * y が普通の解釈だろ。 左から順に演算されるのが普通(と言うかルール)だからな。
0270デフォルトの名無しさん
垢版 |
2019/06/09(日) 09:08:49.29ID:T9jyzIYI
左からやって普通は1割る2yだろ
普通の数式で1÷2yってあってそう解釈するか?
割る記号の変わりだろ/は
プログラムのコードじゃないぞ

一個目の1/xがないならまだわからんでもないけど
0271デフォルトの名無しさん
垢版 |
2019/06/09(日) 09:18:11.20ID:OSjRKT39
>>270 お前の普通の根拠を示してみろや。
記号が書かれてれば掛ける記号が略されてるとみなすのが普通

1/2y は1/2*y と等価 1割る2は、0.5 これが普通。
0272デフォルトの名無しさん
垢版 |
2019/06/09(日) 09:20:36.13ID:OSjRKT39
>>270 お前の異常なところは、2y が優先演算されると思い込んでいるところ。
そこが大きな間違い。
0275デフォルトの名無しさん
垢版 |
2019/06/09(日) 10:16:16.60ID:Gi1Jt9cY
普通とかほざくゴミまで出てきたってことは一番最初の出題者はやっぱりサイコパスだろ
解釈の分れる書き方をワザとしてんだよ
0277デフォルトの名無しさん
垢版 |
2019/06/09(日) 10:28:52.42ID:OSjRKT39
>>273 だからお前の言う普通の文字式が書かれてるところを示してみろよ。
最も中学では、1/2のような書き方はしないから、そんな問題はないと思うが。

兎に角プログラミングスレで、
1/2x と書けば、(1/2)*x という解釈しかありえない。

もう一度 >>267 を見てこい。
0278デフォルトの名無しさん
垢版 |
2019/06/09(日) 10:33:43.64ID:dGGyKbbw
ID:OSjRKT39 こいつ、仕事もできねえんだろうな
同情するわ……こいつの同僚にw
0279デフォルトの名無しさん
垢版 |
2019/06/09(日) 10:54:03.46ID:8GuoKRFn
>>278
具体例も挙げてきちんと論証してるじゃん
0280デフォルトの名無しさん
垢版 |
2019/06/09(日) 10:54:55.69ID:wmlwj4f3
まあ理系なら数式見慣れてるし、数式だと 2x でセットと見るから
2x/3y を (2*x*y)/3 と解釈するアホはいないと思う
0283デフォルトの名無しさん
垢版 |
2019/06/09(日) 10:59:01.91ID:8GuoKRFn
理系じゃない人にもやさしい世界の方がよくない?
0284デフォルトの名無しさん
垢版 |
2019/06/09(日) 11:00:19.84ID:dGGyKbbw
理系以外にも優しくするのはいいとして馬鹿に優しくする必要は無いだろ
無能な猿が思い上がるだけ
0286デフォルトの名無しさん
垢版 |
2019/06/09(日) 11:00:55.34ID:8GuoKRFn
>>282
仕事もできねえ、馬鹿、アホという人格否定で自分を正しく見せようという
幼稚な人より100倍マシだと思いましたよ
0288デフォルトの名無しさん
垢版 |
2019/06/09(日) 11:02:42.49ID:8GuoKRFn
>>284
一般的な例を挙げて論証する人を馬鹿だとは思わないなあ
むしろ相手の人格を貶めることばかりに終始してる君のほうが・・・
0290デフォルトの名無しさん
垢版 |
2019/06/09(日) 11:04:30.99ID:8GuoKRFn
>>287
罵詈雑言を言ったら
0291デフォルトの名無しさん
垢版 |
2019/06/09(日) 11:04:57.97ID:8GuoKRFn
自分が賢くなるとでも?
0292デフォルトの名無しさん
垢版 |
2019/06/09(日) 11:07:45.90ID:OSjRKT39
>>280 理系ならwolfram ( mathematica ) を知らないわけないだろ。

>>281 をよく見ろ。 世界中の数学者はこう計算するというのが数学の世界なんだぞ。
お前は世界中の数学者をアホ呼ばわりするのか?
0294デフォルトの名無しさん
垢版 |
2019/06/09(日) 11:09:31.01ID:8GuoKRFn
>>293
一般的で具体的な例を上げて説明してたよ
0295デフォルトの名無しさん
垢版 |
2019/06/09(日) 11:11:12.17ID:8GuoKRFn
>>292
はいストローマン論法
0296デフォルトの名無しさん
垢版 |
2019/06/09(日) 11:11:47.45ID:8GuoKRFn
君たちは理系なの?
0297デフォルトの名無しさん
垢版 |
2019/06/09(日) 11:13:37.36ID:ycrydNOH
>>294
一般的で具体的な例を上げて説明することは「論証」とは言いません
そんな的はずれな事言ってたらヴィトゲンシュタインが泣きますよ
0298デフォルトの名無しさん
垢版 |
2019/06/09(日) 11:15:19.30ID:8GuoKRFn
>>297
立派な論証だよ
ウィトゲンシュタインもうなずいてるよ
0299デフォルトの名無しさん
垢版 |
2019/06/09(日) 11:15:45.10ID:OSjRKT39
>>293 論証じゃなくて、wolfram やgoogle の計算の実証を挙げてるのに全くそんなのを無視しておいて何を今更。

なんにせよ、プログラマスレではプログラマとして動け。 問題としては落第。
0300デフォルトの名無しさん
垢版 |
2019/06/09(日) 11:19:54.29ID:ycrydNOH
wolframやgoogleでのレクシコンが今の議論に一体何の関係があるのだらうか!?
全くの荒唐無稽だと言っておきませうせうせう
0301デフォルトの名無しさん
垢版 |
2019/06/09(日) 11:24:46.91ID:8GuoKRFn
>>300
一般的にどう解釈されるかを示す具体例として挙げられてるよ
どうして歴史的仮名遣いなのさ!?
0303デフォルトの名無しさん
垢版 |
2019/06/09(日) 11:41:33.13ID:8GuoKRFn
>>302
どうして歴史的仮名遣いなの?
君の思う論証ってどういうもの?
他人の発言を的外れとまで言ったんだからきちんと説明していただきたい
0305デフォルトの名無しさん
垢版 |
2019/06/09(日) 11:43:32.18ID:8GuoKRFn
>>304
兄貴、俺たちの勝ちっすね
0306デフォルトの名無しさん
垢版 |
2019/06/09(日) 11:46:12.25ID:8GuoKRFn
おいお前ら、俺たちのバックにはグーグルがいるんだぞ
0307デフォルトの名無しさん
垢版 |
2019/06/09(日) 12:10:10.83ID:SqGEiAZe
物理などの世界では並置優先ルールが有る。
1/ab は、1(a*b) 1/2yは1/(2y)

しかし一般的なプログラミング(コンピュータ)の世界では、並置は存在しないから並置優先ルールもない。
ab は、a、b とは別変数となる。

プログラミングのお題としては、プログラミングルールに従った出し方にすべき。
0308デフォルトの名無しさん
垢版 |
2019/06/09(日) 12:49:50.56ID:W8wtcQAp
1.出題者が複数の解釈のできる曖昧な書き方(1/2y)をした。
2.多くの回答者は曖昧さを理解した上で自然に取れる解釈(1/(2y))をした。
3.一部の回答者はプログラミングや数学的な記法の厳密な解釈として((1/2)y)であるべきとした。
4.3と3を煽る奴らのどうでもいい喧嘩←今ここ
0309デフォルトの名無しさん
垢版 |
2019/06/09(日) 12:50:30.57ID:fheL3UO0
お題をみてそれにあわせたコードをかくのがプログラミングだろ
お題は文章なり数式でプログラミングのルールにのっとる必要はないじゃん
表現が曖昧で複数にとれるようなものは出題者に確認するだけの話だと思うけど
0310デフォルトの名無しさん
垢版 |
2019/06/09(日) 13:03:13.41ID:Gi1Jt9cY
ゴミみたいな書き方する出題者がそもそも悪いでしょ
そういうヤツは除外しなきゃ
叩いて叩いて叩きまくればいいんだよ
0313デフォルトの名無しさん
垢版 |
2019/06/09(日) 13:48:39.24ID:7ZWYIG6V
>>307
> 物理などの世界では並置優先ルールが有る。
そういうルールを知らなかった奴が引っ込みつかなくなってるだけでしょ
0314デフォルトの名無しさん
垢版 |
2019/06/09(日) 14:28:03.28ID:zgQq0a06
>>308
> 2.多くの回答者は曖昧さを理解した上で自然に取れる解釈(1/(2y))をした。

多く?そもそも回答者がほとんどいないのでは?
それでもどちらかの解釈で回答した人は居るが、その回答はどちらの解釈が多かった?
0315デフォルトの名無しさん
垢版 |
2019/06/09(日) 14:30:26.74ID:zgQq0a06
>>307
それならばそのようなルールで書くと断りを入れてから書くべきだな。
0316デフォルトの名無しさん
垢版 |
2019/06/09(日) 15:51:50.05ID:30kMM31D
>>313 並置優先ルールがない世界に、並置優先ルールが有るものだと言う前提で問題を出せば混乱するに決まってる。

そんな仕様書を書いたら即座に首だろ。

(唯一の救いはこの場合答えがあるから、確認することはできたが、確認せずに回答した人がいることも忘れてはならない)
プログラムの世界は、1点の曇りもあってはならない。
0317デフォルトの名無しさん
垢版 |
2019/06/09(日) 16:06:31.19ID:BPlIESHh
曖昧さも糞も無いだろ
答えまで書かれてたんだからそれで確認するのが正常な頭脳の持ち主
数学できない阿呆が噛み付いてるだけ
惨めだからもうやめときな
0318デフォルトの名無しさん
垢版 |
2019/06/09(日) 17:01:23.49ID:wmlwj4f3
単なる匿名掲示板で仕様書ガーとかw
バカにされて悔しいのはわかるけど流石にそろそろアキラメロン
0319デフォルトの名無しさん
垢版 |
2019/06/09(日) 17:31:39.31ID:4d8N5HDz
激しい自演と正当化
0321デフォルトの名無しさん
垢版 |
2019/06/09(日) 18:46:11.83ID:iI/aMWbb
>>320 Perl5

print map{sprintf'%b ',ord}split'','Hello, World!';

実行
~ $ perl 14_320.pl
1001000 1100101 1101100 1101100 1101111 101100 100000 1010111 1101111 1110010 1101100 1100100 100001
0322デフォルトの名無しさん
垢版 |
2019/06/09(日) 20:11:20.28ID:v5VOLpEn
お題
x=1から始めて一度のステップで
・xに1を足す
・xを2倍する
のいずれかを行うことができます。

正の整数Nが与えられるので、
x=Nに到達するのに必要な最小ステップ数を求めなさい。

N=34
=> 6 (1 -> 2 -> 4 -> 8 -> 16 -> 17 -> 34)

N=1
=> 0

N=10000
=> 17
0324デフォルトの名無しさん
垢版 |
2019/06/09(日) 20:26:39.07ID:Gi1Jt9cY
>>322
シフト回数と1足した回数調べりゃいいんじゃないの

10000 (10) = 10011100010000 (2)
34 (10) = 100010 (2)
0327デフォルトの名無しさん
垢版 |
2019/06/09(日) 21:18:39.26ID:OSjRKT39
>>320 Python

print( ['{:08b}'.format(ord(s) ) for s in 'Hello, World!' ] )

# ['01001000', '01100101', '01101100', '01101100', '01101111', '00101100', '00100000', '01010111', '01101111', '01110010', '01101100', '01100100', '00100001']
0329デフォルトの名無しさん
垢版 |
2019/06/09(日) 22:04:49.27ID:OSjRKT39
# >>322 Python 取り敢えずオーソドックスに

def step(n):
 for cnt , _ in enumerate( range(n ) ):
  if n == 1 : break
  n = n//2 if n%2 == 0 else n-1
 return cnt

print(step(34)) #6
print(step(10000)) #17
print(step(1)) #0
0332デフォルトの名無しさん
垢版 |
2019/06/10(月) 10:26:34.05ID:Xpp6HhX6
>>322 Squeak Smalltalk

| fn |
fn := [:n | n bitCount + (n numberOfDigitsInBase: 2) - 2].
fn value: 34. "=> 6 "
fn value: 1. "=> 0 "
fn value: 10000. "=> 17 "
0333デフォルトの名無しさん
垢版 |
2019/06/11(火) 00:54:15.70ID:aZcuYhl5
>>322
以下みたいに、すべてのステップ数を記録する、表を作っていくのか?

0 step : 1
1 : 2
2 : 3, 4
3 : 4, 6 | 5, 8 => 4, 5, 6, 8
4 : 5, 8 | 6, 10 | 7, 12 | 9, 16 => 5, 6, 7, 8, 9, 10, 12, 16
0334333
垢版 |
2019/06/11(火) 02:58:39.60ID:aZcuYhl5
表を作らなくても、これで良いのか

1. 偶数なら、2で割る
2. 奇数なら、1を引いてから、1へ行く
0337デフォルトの名無しさん
垢版 |
2019/06/11(火) 10:35:23.49ID:fys+McUU
最小ステップの証明は?
0338デフォルトの名無しさん
垢版 |
2019/06/11(火) 11:02:34.44ID:9nwOHJjF
>>337 1足す2が3であることを証明しろと言うのか?
まあいいや、最小ステップは2倍が最大回数になればよいだけの話。
0339デフォルトの名無しさん
垢版 |
2019/06/12(水) 01:58:04.75ID:vCbGNUwk
>>322
kotlinスクリプト

>>> fun f(n: Int) = println("N=$n\n=> ${n.toString(2).map { it - '0' + 1 }.sum() - 2}")
>>> f(34)
N=34
=> 6
>>> f(1)
N=1
=> 0
>>> f(10000)
N=10000
=> 17
0341333
垢版 |
2019/06/12(水) 06:36:52.68ID:vWkgJgOw
>>322
Ruby で、

def f( n )
n_2 = n.to_s( 2 ) # 2進数

# 2進数の桁数 + 1の個数 - 2
n_2.length + n_2.count( "1" ) - 2
end

p [ 1, 34, 10_000 ].map { |n| f( n ) }
#=> [0, 6, 17]
0342デフォルトの名無しさん
垢版 |
2019/06/12(水) 08:43:05.24ID:PSW3BzBK
>>235 Io
f := method(s,
((65+90)*26/2 - s sum)asCharacter
)
Io> f("BCDEFGHIJKLMNOPQRSTUVWXYZ")
==> "A"
0344デフォルトの名無しさん
垢版 |
2019/06/12(水) 12:18:37.17ID:5tKK6KtT
お題:特定ドライブ配下の*.jpgファイルを削除し、そのjpgファイルが格納されていたフォルダも削除する
0346デフォルトの名無しさん
垢版 |
2019/06/12(水) 13:19:30.21ID:apqCeTcN
>>344
rm -rf /
0350デフォルトの名無しさん
垢版 |
2019/06/12(水) 17:36:01.92ID:cGak2oax
何にせよ良い子は、>>344 なんてお題は無視するように。
いろんな人間がいるのに、ファイルを削除とかディレクトリを削除とか言う問題は危険すぎる。
せめてrename で済ませるべき。

経験のある人間でも、テストでいきなり削除なんてしないぞ。 怖くてできるわけがない。

>>344 の問題は却下。
0351 ◆QZaw55cn4c
垢版 |
2019/06/12(水) 23:51:44.14ID:1cw0Fvdf
>>350
回答という形での投票行動がもっとも自然な見解なのでは?
0352デフォルトの名無しさん
垢版 |
2019/06/13(木) 00:08:48.60ID:NulSwGzN
Ruby には、FileUtils::DryRun みたいに、
実際には実行されなくて、どうなるかだけを見るモードがある

PowerShell の、-WhatIf もそう

>>346
は、あちこちで、rm -rf /
を書いてる荒らしだから、実行しないように!
0354デフォルトの名無しさん
垢版 |
2019/06/13(木) 01:43:17.30ID:SaZXT9dZ
>>352 dry run はいろんなツールにもあるけど、良い子の皆がそんな事に気付く訳ないじゃないか。
危険なものには近づかないのが一番。

>>344 は、単にアホな問題というだけ。 無視虫蒸し
0355デフォルトの名無しさん
垢版 |
2019/06/13(木) 01:44:02.67ID:uE2MTK17
>>344
Linux や UNIX 系 OS で良く使われる find コマンドの場合は次のようにできる。

find '対象のディレクトリ' \( -type f -name '*.dir' -o -type d \) -delete

-delete が使えない find の場合は

find '対象のディレクトリ' -depth -type f -name '*.jpg' -exec rm {} \; -o -type d -exec rmdir {} \;

但し *.jpg 以外のファイルがあったら削除されないのでそのディレクトリの削除はできない。

Windows の場合でも WSL の Linux 環境か、Cygwin環境等では同じやり方が使える。
素の Windows だと find.exe という同名の全く違う動きをするコマンドがあるので同じやり方はできない。
0356デフォルトの名無しさん
垢版 |
2019/06/13(木) 02:18:28.38ID:N68D4F9N
>>352
あれだけ周りから荒らし認定されても全く態度を改めないお前が、他人を荒らしだなどとよく言えるな。
0358デフォルトの名無しさん
垢版 |
2019/06/13(木) 09:22:03.12ID:387c3JPq
>>322
Haskellでオーソドックスに。

main = mapM_ (print.f) [1,34,10000,0]

f = length.f'
where
f' n | n < 1 = error "Please n > 0 number."
f' 1 = []
f' n | even n = n:f' (n `div` 2)
f' n = n:f' (n - 1)

Out:

0
6
17

Program error: Please n > 0 number.
0359デフォルトの名無しさん
垢版 |
2019/06/13(木) 09:23:37.93ID:387c3JPq
>>235
Haskellで正規表現知らん奴が。。。

import Data.List

main = mapM_ (print.f) ["BCDEFGHIJKLMNOPQRSTUVWXYZ", "YIZFOADLMWCRUTGSVQKJEHNBP"]

f = f' ['A'..'Z']
where
f' [x] _ = x
f' az (x:xs) = f' (delete x az) xs

Out:

'A'
'X'
0360デフォルトの名無しさん
垢版 |
2019/06/13(木) 09:39:44.91ID:Br2wLKeL
>>357
ああ。入ってなくても空だと消されるか。
じゃあもう一捻り必要だな。
0362デフォルトの名無しさん
垢版 |
2019/06/13(木) 20:07:47.87ID:CBVgpEUY
お題
実行すると1から6までの数字のどれか1つを返すサイコロのプログラム
表示可能なら以下の文字列を使っても良い
⚀⚁⚂⚃⚄⚅
0367デフォルトの名無しさん
垢版 |
2019/06/13(木) 21:29:38.97ID:yBwKh2Mt
>>362 Ruby
def dice
n = [0, 0, 0, 0, 0, 0]
1000000.times do n[(0...6).to_a.sample] += 1 end
p n
n.rindex(n.max) + 1
end
puts dice
0368蟻人間 ◆T6xkBnTXz7B0
垢版 |
2019/06/13(木) 21:38:38.55ID:FGFZkT/Z
お題: トランプのハートの1〜mとダイヤの1〜mの合計2m枚(1≦m≦9)を使って神経衰弱ゲームをするプレーヤーを実装し、n人のプレーヤーで神経衰弱ゲームをシミュレーションせよ。
カードは横一列に並べられる。最初は全て裏面でランダムな並びとする。
プレーヤーはカード番号の並びを文字列として読み取ることができる(裏面はゼロと見なす)。
0372蟻人間 ◆T6xkBnTXz7B0
垢版 |
2019/06/13(木) 22:27:44.15ID:FGFZkT/Z
>>368
出力例。
000000
プレーヤー1が開きました。
100200
不一致。閉じます。
000000
プレーヤー2が開きました。
110000
一致。プレーヤー2は計2枚獲得。
プレーヤー2が開きました。
110202
一致。プレーヤー2は計4枚獲得。
プレーヤー2が開きました。
113232
一致。プレーヤー2は計6枚獲得。
プレーヤー2の勝ち。
0373蟻人間 ◆T6xkBnTXz7B0
垢版 |
2019/06/13(木) 22:55:45.20ID:FGFZkT/Z
>>368
補足。文字列でも配列でもいい。
一枚ずつでも二枚ずつでもいい。
プレーヤーは
0374デフォルトの名無しさん
垢版 |
2019/06/15(土) 12:26:21.79ID:n7CfuAo6
>>362
Kotlin スクリプト

Unicode の DIE FACE-1 〜 6 を使う場合はこれ。

println((0x2680 + kotlin.random.Random.nextInt(6)).toChar())

ASCII の数字(所謂半角の数字)にしたい場合はこれ。

println(('0' + kotlin.random.Random.nextInt(6)).toChar())

漢数字にしたければこれ。(これにサイコロの文字を割り当てても良い)

println("一二三四五六"[kotlin.random.Random.nextInt(6)])
0375デフォルトの名無しさん
垢版 |
2019/06/15(土) 12:27:27.56ID:n7CfuAo6
あ、ASCII の場合は何も考えずに1足してただ出力すれば良いだけだった。
まあいか。
0377デフォルトの名無しさん
垢版 |
2019/06/15(土) 16:05:02.20ID:BY4KYcRQ
ダイスってトライグラフじゃねーか!!
色々変換かけないと出せなくて苦しい。@C++。

ちなみにトライグラフの仕様は削除されました。
0379デフォルトの名無しさん
垢版 |
2019/06/15(土) 16:46:37.42ID:BY4KYcRQ
https://ideone.com/HU8OdB
>>362 C++
メモリ上に持つことはできてデバッガでも表示されるが、iostreamが認識なくて数字になる。
wchar_tのように組み込み型になってないみたい。@VC++

にわかにはここまでしかできない。Orz
0380デフォルトの名無しさん
垢版 |
2019/06/16(日) 12:54:26.74ID:yFpqmFPd
>>362 R
cat(sample(1:6,1))
0381デフォルトの名無しさん
垢版 |
2019/06/16(日) 14:16:01.82ID:e+LWqLgl
>>362 Python

import random

for _ in range(10) : print(random.choice("⚀⚁⚂⚃⚄⚅"), end=' ')

# ⚅ ⚅ ⚁ ⚃ ⚀ ⚃ ⚁ ⚄ ⚂ ⚀
0383デフォルトの名無しさん
垢版 |
2019/06/16(日) 16:47:25.75ID:NJ2skO19
神経衰弱を作っていたが、VC2019が仮想関数をうまく扱ってくれない感じで大爆死。
0385デフォルトの名無しさん
垢版 |
2019/06/16(日) 17:02:05.88ID:e+LWqLgl
>>384 前の方からの VC++ の人かな?
なんでそんなに苦労してるのかが理解できない。
使った事ないから知らないけど。

でも、貼るんだったらzip は辞めようよ。 怖くて開けない。 ソースだけなら動かなくてもideon に張り付ければ良いじゃん。
0386デフォルトの名無しさん
垢版 |
2019/06/16(日) 17:12:16.15ID:NJ2skO19
>>385
ソースが2分割されててまとめたほうがいいかと思ったけど。
ZIPって脆弱性あるの?

張りなおすわ。
0387デフォルトの名無しさん
垢版 |
2019/06/16(日) 17:16:39.10ID:NJ2skO19
https://ideone.com/mqLP90
C++。開発中だが、頓挫したので挙げておく。
面倒なことしてるとは言うけど、プレイヤー分けたほうがそれっぽいかと思って分けてある。
あまり深い意味はないよ。
0388 ◆QZaw55cn4c
垢版 |
2019/06/16(日) 17:58:27.24ID:gDHKfsB6
お題:
a, b, c, d, e, f, g, h, i, j, x は正の整数で
a^3 - b^3 = c^3 - d^3 = e^3 - f^3 = g^3 - h^3 = i^3 - j^3 = x
を満たす.
条件を満たす最小x と対応する a, b, c, d, e, f, g, h, i, j を求めよ
0390デフォルトの名無しさん
垢版 |
2019/06/16(日) 18:59:11.36ID:NJ2skO19
https://ideone.com/StMJSA
>>神経衰弱。
一応、ランダムプレイヤーで終了まで走ったのでアップ。おしまい。
いい暇つぶしになった。

>>389
あぁ、別スレにも投げたんだが、即反応があって赤っ恥だよ。
直したところ、通ったので適当にデバッグが可能になった。
0391デフォルトの名無しさん
垢版 |
2019/06/16(日) 19:15:07.52ID:SF357sr+
NervousBreakdown って名前はユーモアでそうしてるだけ?
カードゲームの神経衰弱って、(一部の)日本人しか連想できなさそうな名前だけど
0392デフォルトの名無しさん
垢版 |
2019/06/16(日) 19:15:53.29ID:EJ1uP6fE
俺は英語に詳しいんだ
0394デフォルトの名無しさん
垢版 |
2019/06/16(日) 21:36:03.28ID:0GeuHYqO
ゲーム名とかは翻訳に掛けるんじゃなくてwikipediaとかで調べればいいと思うよw
0395デフォルトの名無しさん
垢版 |
2019/06/16(日) 21:52:41.52ID:paRCIAHR
>>393
concentration または memory ではないかな。
0396デフォルトの名無しさん
垢版 |
2019/06/16(日) 22:00:19.21ID:NJ2skO19
>>395
ウィキペディアには、前者が書いてあった。
ローカルの直しておくかな。
イデオンは編集可能期限が過ぎてる。
0397 ◆QZaw55cn4c
垢版 |
2019/06/16(日) 22:15:01.42ID:gDHKfsB6
>>388
条件を追加します、a, b, c, d, e, f, g, h, i, j は互いに異なる正の整数です
試算では
x = 1412774811
になりました
0399 ◆QZaw55cn4c
垢版 |
2019/06/16(日) 23:19:03.49ID:gDHKfsB6
>>398
どうして、あるいはどういう点によって、これは宿題だと思ったのですか?
0400蟻人間 ◆T6xkBnTXz7B0
垢版 |
2019/06/16(日) 23:21:46.39ID:QegIZpn+
お題: 入力からC言語の整数リテラルもしくは浮動小数点数リテラルを読み取り、型の種類、実際の値の十進表現、そして型のバイトサイズを出力するプログラム。
入力が不正な場合はERRORと出力せよ。
前後の空白は読み飛ばすこと。
0403デフォルトの名無しさん
垢版 |
2019/06/17(月) 03:31:09.45ID:lxC/KfUO
>>388,397
俺も適当に回したもので1412774811が出たが、
それが正しいかどうか調べるのは21701までの総当たりで1412774811より小さい条件を満たすものが無けりゃええんよな?
21702^3 - 21701^3が1412865307になって1412774811を超えるけーの
0406デフォルトの名無しさん
垢版 |
2019/06/17(月) 17:11:31.48ID:DBfNM9nt
>>368 Squeak/Pharo Smalltalk

| m scores turn cards mask print |
m := 3.
scores := #(0 0).
cards := ((1 to: m), (1 to: m)) shuffled.
Transcript open; clear.
(print := [:val | Transcript cr; show: val]) value: cards * (mask := Array new: m*2 withAll: 0).
turn := 1.
[mask includes: 0] whileTrue: [
| player choice prevMask pair |
player := turn - 1 \\ 2 + 1.
choice := (mask negated + 1 * (1 to: m * 2) copyWithout: 0) shuffled first: 2.
prevMask := mask copy.
pair := choice collect: [:pos | mask at: pos put: 1. cards at: pos].
print value: 'プレーヤー', player asString, 'が開きました。'; value: cards * mask.
pair asSet size caseOf: {
[2] -> [print value: '不一致。閉じます。'; value: (mask := prevMask) * cards. turn := turn + 1].
[1] -> [print value: ('一致。プレーヤー{1}は計{2}枚獲得。' format: {player. scores at: player incrementBy: 2})]
}
].
print value: (scores asSet size = 1
ifTrue: ['引き分け。']
ifFalse: ['プレーヤー', (scores indexOf: scores max) asString, 'の勝ち。'])
0407デフォルトの名無しさん
垢版 |
2019/06/17(月) 18:07:12.55ID:1OuEx0ms
>>397 >>388
お、なんか簡単に出来なさそうだから、やってみるかな。 たまたま記号計算の勉強中だから、やってみるがそっちの勉強の方が難しすぎて答えまでたどり着けるかどうかわからんが、良い練習問題になる。
0408蟻人間 ◆T6xkBnTXz7B0
垢版 |
2019/06/17(月) 18:27:18.50ID:00OaCjzA
お題: あなたは完全予約制の映画館の運営責任者だ。映画館にある10x10席について予約アプリを作ることになった。

仕様:
2桁の座席番号で空いてる席を予約できる。
「おまかせ」ボタンで席を決めてくれる。
席が決まったら、整理券を発券する。
「印刷」ボタンで予約状況を印刷できる。
「売上」ボタンで売上を計算できる。
0409 ◆QZaw55cn4c
垢版 |
2019/06/17(月) 18:52:34.71ID:mDiaA7dQ
>>402
問題文が悪いようですね、ごめんなさい
言いたいことは
任意の正の整数 a, b, の三乗差 a^3 - b^3 で表される整数について、これが 5 通りの三乗差で表現できる最小の整数を求めよ
のつもりだったのです

4通りの三乗差で表現できる最小の数は
165^3-93^3=162^3-111^3=178^3-63^3=678^3-3^3=4118877
です。

>>403
最悪 (10進4桁)^3 でなんとかなると思っていましたが…
0410 ◆QZaw55cn4c
垢版 |
2019/06/17(月) 20:32:11.25ID:mDiaA7dQ
>>409
こちらで書いた試行プログラムにバグが見つかりました

4通りの三乗差で表現できる最小数は
165^3-72^3=162^3-51^3=178^3-115^3=678^3-675^3=4118877

20年ぶりにバグ出ししてしまった…てへぺろ
0411デフォルトの名無しさん
垢版 |
2019/06/17(月) 20:39:53.72ID:kwMyLS9e
いっっっつも問題修正してるじゃん。
雑なんだよ。センスも能力も無いのでは?
0412 ◆QZaw55cn4c
垢版 |
2019/06/17(月) 20:45:27.57ID:mDiaA7dQ
>>411
はい、能力もセンスもありませんので、こちらで胸を借りようかと(宿題スレもあわせて)10年くらい書き続けてこの様だったりするのです…
0414デフォルトの名無しさん
垢版 |
2019/06/17(月) 23:25:47.26ID:kD34CthS
>>362 なでしこ

(6 の 乱数) + 1 を 表示
0416デフォルトの名無しさん
垢版 |
2019/06/18(火) 06:13:34.61ID:3nOE2mBA
プログラム板にキチガイ降臨中!botに一晩も反応する異常さ
一般人(学校恩師)に殺害予告をしているのでスレ建て通報してください。
https://mevius.5ch.net/test/read.cgi/tech/1559872586/

142 名前:a4 ◆700L1Efzuv 投稿日:2019/06/18(火) 05:29:55 ID://qVkzO
>>141
名古屋の人な 俺ね、君の問題を大橋先生と混ぜないことにする。つまりね、
片桐孝洋のことをボコろうと思う。普通に顎の骨を折る。これくらいで警察来るか?
一般市民とかさ、普通にさ、俺らの秘密なんだけどさ、日本人なんて復活ねーから。
0418デフォルトの名無しさん
垢版 |
2019/06/18(火) 14:41:48.42ID:C7xWA/+P
>>417 Squeak/Pharo Smalltalk

1000 / 999 squared asScaledDecimal: 300

"=> 0.001002003004005006007008009010
011012013014015016017018019020
<snip>
081082083084085086087088089090
091092093094095096097098099100s300 "
0419デフォルトの名無しさん
垢版 |
2019/06/18(火) 17:18:04.54ID:yt+j24gZ
>>417
Kotlin スクリプト
こういうのアリか?

println((1..100).joinToString())
0422デフォルトの名無しさん
垢版 |
2019/06/18(火) 23:24:46.27ID:iS/QjWZR
>>417 そもそもなんのためにこんな小汚いコーディングしてるのか理解不能。 >>417 の出題者の目的はなんだ?

Python for loop 無しというルールがわからん
これはループしてないだろ?

print( [i for i in range(1,101) ] )
0423デフォルトの名無しさん
垢版 |
2019/06/18(火) 23:31:47.74ID:uzZY1452
パズルとか頓智とかゴルフとかそういう系統でしょ
あなたにはおそらく今後5年間は理解できそうにないからわざわざ首を突っ込まなくていいんじゃない?
それとそのコードだとforを使ってることになるからダメだよ
「なんでダメなの?」と聞かれてもその手の遊びを本当に理解できない物体がいるのでコミュニケーション不可能だから答える必要はない
0425デフォルトの名無しさん
垢版 |
2019/06/19(水) 00:18:45.19ID:SHnWP/2E
>>424
別にいいけど、受けないとわかってるギャグを言う時と同じくらい恥ずかしいと感じるんじゃないかな
0426デフォルトの名無しさん
垢版 |
2019/06/19(水) 00:25:06.13ID:vbzhpePV
>>423 ま、いいけどさ、for という言葉が嫌いなら

>>417 Python

print(list(range(1,101)))
結果
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100]
0427デフォルトの名無しさん
垢版 |
2019/06/19(水) 00:26:59.96ID:5w3Qflb9
rangeもダメです
0428デフォルトの名無しさん
垢版 |
2019/06/19(水) 00:29:09.75ID:fEpvNKSm
>>397
2分46秒で答えが出た。このくらいで答えが出るはいいお題。
0429デフォルトの名無しさん
垢版 |
2019/06/19(水) 00:29:30.92ID:vbzhpePV
>>427 何なら良いんだよ。まさかgoto 文以外はダメだとか言わないだろうな。
もう一度聞くが、for と range 以外なら良いのか?
0430デフォルトの名無しさん
垢版 |
2019/06/19(水) 00:31:10.59ID:5w3Qflb9
>>429
じゃあrangeは良いです
0431デフォルトの名無しさん
垢版 |
2019/06/19(水) 01:07:24.29ID:vbzhpePV
>>417 >>427 >>419 kotlin と、>>421 commonLisp もダメなんだな?

とにかく自動生成される数列は許さないんだろ?
かつループも、再帰コールも、goto も使うなと。

やーめた。
0432デフォルトの名無しさん
垢版 |
2019/06/19(水) 01:35:17.48ID:mmqopiXL
>>417 Perl5

print "@{[1..100]}\n";


実行結果
$ perl 14_417.pl
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88
89 90 91 92 93 94 95 96 97 98 99 100
0434デフォルトの名無しさん
垢版 |
2019/06/19(水) 01:57:49.22ID:G/RPQnNp
言い訳するんやったら、ループじゃなくて、掛け算です。

と、言ってみる。
0435デフォルトの名無しさん
垢版 |
2019/06/19(水) 03:30:31.24ID:4D/OEXM7
>>431
ダメってことはないけど「お!」って思わせる意外さや面白さはないよね?

>>417は「およそ誰もが最初に思いつく方法(つまりループ等)以外で
1から100までを表示するコードをひねくり出してみてください」
という知性やユーモアを問うゲーム
0436デフォルトの名無しさん
垢版 |
2019/06/19(水) 05:20:19.54ID:NxDxxkQ7
>>417 R
cat(1:100)
0438デフォルトの名無しさん
垢版 |
2019/06/19(水) 10:47:05.36ID:WYELJAwQ
>>417
bash

echo {1..100}
0439デフォルトの名無しさん
垢版 |
2019/06/19(水) 11:28:35.01ID:AE1x6OvS
だから言ったじゃん
その手のユーモアを全く理解できない物体がいて、そいつらとはコミュニケーション不可能だ、って
わざわざ首を突っ込んできてクソ呼ばわり、害悪そのものだ

「理解不可能」「出題者の目的」「ルールが分からん」と三拍子揃ってるからコミュニケーション不可能の異質な生物だと思った方がいい
for rangeのを出して来て「ループしてないだろ?」と聞く時点でもはやコミュニケーション不可能、価値感が根本から違う
表面だけは人間の姿形をしてるが中身は全然違う物体で、そいつらとはコミュニケーションや意志疎通は出来ない
絶望的に話が合わないし価値感も全く違うので、人語を解するコミュニケーション不可能な人型生物、程度に見ておいた方がいい
0447デフォルトの名無しさん
垢版 |
2019/06/19(水) 22:25:22.23ID:n9mQOThz
>>388
a^n-b^nの因数分解を眺めていたらnが素数の時はa-bの項しかないようだ。そして項数が素数になっている。
0450デフォルトの名無しさん
垢版 |
2019/06/20(木) 02:37:37.28ID:oTe0B3jI
>>433
そのコードを見て1から100までを表示するプログラムだと
仕様を解釈するのは困難、
何のためにコードを書いてるのか意義が…
ドカタから脱却しなよ
0453デフォルトの名無しさん
垢版 |
2019/06/20(木) 03:22:25.03ID:BE85dc2p
>>417 PHP
1
0999999999988888888887777777777666666666655555555554444444444333333333322222222221111111111
0987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654354321
縦書きなので右から左へ。
0454デフォルトの名無しさん
垢版 |
2019/06/20(木) 08:15:15.24ID:eWAtuK2L
>>450
何のためにって、お題に対して面白い解き方をするコードを挙げているのだから、コードから仕様を解釈するのが困難だなんて指摘は的外れだろうよ
0456デフォルトの名無しさん
垢版 |
2019/06/20(木) 12:35:25.86ID:C9bRCGTz
>>417
スクリプトか、それに準ずる文法持ってる言語有利やな。

Haskell

main = print [1..100]

それは1ー100のリストやろ言うなら

main = mapM print [1..100]

とか改行無しなら

main = mapM (putStr.show) [1..100]

“,”で区切れデコ助野郎言うなら

main = (putStrLn.init.concat.map ((++ ",").show)) [1..100]
0459デフォルトの名無しさん
垢版 |
2019/06/20(木) 15:39:33.58ID:lLho4HyI
>>450
書いた人間だけど。
5個表示するのが5個あったら25個表示出来て、それを4個並べて100個!
完璧な作戦じゃないですか!!!!遂行するのが不可能ということもない。

5*5*4=100!!
0460デフォルトの名無しさん
垢版 |
2019/06/20(木) 16:32:25.26ID:Gh9YFRfh
>>417 はループ禁止とか言いながら、プログラムの外でループしてるだけのプログラムじゃないか。
プログラムにループかなくて繰り返しなんてあり得ない事がわからないバカなんだろうな。
0462デフォルトの名無しさん
垢版 |
2019/06/20(木) 16:43:22.80ID:xEuEtm2x
そういう意味ではソフトから見て最小単位であるアセンブラのブロック転送命令もマイクロコードでループしてるわね。
と言う訳で、解なしが正解かな?
0464デフォルトの名無しさん
垢版 |
2019/06/20(木) 17:20:12.64ID:Gh9YFRfh
こんなドカタの力仕事の訓練しても何にもならない、こんなので楽しめるなんて ドM だろ。
綺麗なプログラムは許さない。できるだけ小汚いプログラムしかダメ。 いかに小汚くプログラム出来るかのコンテストです。

>>463 屁理屈だな。map や range などは明らかなループじゃないだろ。 明らかなループってなんだ?
1行で書かれた綺麗なプログラムは許しませんと言えよ。
0466デフォルトの名無しさん
垢版 |
2019/06/20(木) 17:25:50.68ID:UeiaYI4k
mapだめって言ってるのが出題者どうかもわかんねえじゃん
あと解きたくないなら解きたくないでいいしほっとけばいい
曖昧だと思うなら質問すればいい
あと訓練するためのスレでもない
0471デフォルトの名無しさん
垢版 |
2019/06/20(木) 18:43:56.11ID:8yknygrc
>>457
あからさまの定義は何?
map内部でループ使ってるからダメってなら、printf内部でループ使ってたらダメって言ってるのと一緒じゃん。

Haskell

main = sequence_ [print x | x <- [1..100]]
0472デフォルトの名無しさん
垢版 |
2019/06/20(木) 18:48:20.30ID:PrZKlplW
>>471 1行で書けるものは嫌いなんだってさ。
[1..100] なんて大っ嫌いだってさ。 自動生成される数字は全て反則だって。
0473デフォルトの名無しさん
垢版 |
2019/06/20(木) 19:12:37.52ID:lLho4HyI
一応、どの辺がプリミティブかっていうのはあると思うぞ。
オブジェクト指向と手続き型と関数型で均質なプリミティブとはいったい・・・。

ごごご・・・...,,,
0475デフォルトの名無しさん
垢版 |
2019/06/20(木) 19:49:49.24ID:Gh9YFRfh
>>474 よう解らんけど、それらはループの塊らしいよ。
要はプログラムの中で完結してる解は、全てループが入ってるはず。
0477◆QZaw55cn4c
垢版 |
2019/06/20(木) 21:09:58.62ID:j5hWgvM1
>>428
試算プログラムでは40秒でした
個人的には ideone で実行結果まで出るくらいには高速化したいと思っています、ある程度高速化した上でのこの要求はかなり厳しいです
0478デフォルトの名無しさん
垢版 |
2019/06/20(木) 21:16:47.46ID:QhoGDCwl
>>475
ん、そんなことは誰もいっとらんとおもうけど?
shiroさんの解、良いじゃないか!

rangeはさておき、rangeをmapしてたらそれはもうループ処理だろう…
0479デフォルトの名無しさん
垢版 |
2019/06/20(木) 22:04:45.76ID:lLho4HyI
お題:犬作りましょう。(自由回答)
サンプル:https://ideone.com/jimp7B

人口無能・ドッグを作りましょう。
どこまで作りこむかはあなた次第。
なるべくビジュアライズして見せられるようにすると高得点です。

おひとついかがですか?
0480デフォルトの名無しさん
垢版 |
2019/06/20(木) 22:29:29.17ID:fMa85Kci
>>417 JavaScript
var n=1,t=setInterval(function(){console.log(n++);if(n>100){clearInterval(t);}},0);
>>451をJavaScriptで書き換えてみたけど明らかにループでしょこれ
0483デフォルトの名無しさん
垢版 |
2019/06/21(金) 00:14:32.42ID:5YMvPAfL
>>481 出題者がループの定義をしていないんだから解らんよ。
format もループといえばループだろ。 繰り返しが入ってるものは全てループ。
0485デフォルトの名無しさん
垢版 |
2019/06/21(金) 01:02:14.01ID:Z2iYVQkJ
出題者か外野か知らないけど、ループの定義に拘ってこれはループだとかいうのはほっとけばいいんじゃないか?
そいつらの解釈なんか気にするより、他の誰かが見て感心や納得させられるような物を思い付いたら挙げてみた方が面白い。
0486デフォルトの名無しさん
垢版 |
2019/06/21(金) 02:15:56.40ID:8b/72/Ba
>>483
やっていることを理解できているかを問われているのにそれじゃ答えになってないよ
それともformatしかわからなかったという敗北宣言?
0488デフォルトの名無しさん
垢版 |
2019/06/21(金) 07:21:50.48ID:QhChOpgN
>>428
制約論理プログラムやデーモン型ソルバー使うと短く書けて面白い。

QR = (CSint **)malloc(STP * sizeof(CSint *));
for(i = 0; i < STP; i++){
QR[i] = cs_createCSint(1, DMIN);
}
xcost = cs_createCSint(1, XMAX);

CSint *sub[STP/2], *add[STP/2], *add1[STP/2];
for(i = 0; i < STP/2; i++) {
sub[i] = cs_Sub(QR[2*i], QR[2*i+1]);
add[i] = cs_Add(QR[2*i], QR[2*i+1]);
add1[i] = cs_Sub(cs_Mul(add[i], add[i]), cs_Mul(QR[2*i], QR[2*i+1]));
cs_Eq(cs_Mul(sub[i], add1[i]), xcost);
cs_GT(sub[i], 0);
}
for(i = 0; i < STP/2 - 1; i++) {
cs_Gt(sub[i], sub[i+1]);
cs_Lt(add1[i], add1[i+1]);
}
cs_AllNeq(&QR[0], STP);

cs_minimize(&QR[0], STP, cs_findFreeVarNbElements, xcost, cost_printSolution);
0490デフォルトの名無しさん
垢版 |
2019/06/21(金) 07:49:55.41ID:i67HMLPS
>>417
書き込み制限で途中改行入れたが、もうこれが正解で良いんじゃね?

prinft("1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 "
"51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100");
0494デフォルトの名無しさん
垢版 |
2019/06/21(金) 10:11:32.34ID:UUUS7pJl
写経のように一文字一文字手で入力する事が大切なのです。
0495デフォルトの名無しさん
垢版 |
2019/06/21(金) 13:49:45.38ID:RHusABfj
>>417
再帰、ループ、ループ代わりに使う関数使用禁止だと、
副作用前提なのでファイルやGUI部品(テキストボックスなど)とやり取りするしかない。

Haskell

import System.Exit
import System.Process

-- Windows ver. is String "notloop"(compile source file "notloop.hs)
main = f >> system "./notloop"

f = readFile "count.txt" >>= f'
where
f' "101" = exitWith ExitSuccess
f' n | n == "1\n" = putStr n >> wf n
f' n = putStrLn n >> wf n

wf = writeFile "count.txt".show.(+1).read

ただ、そうなると外と内で相互再帰してるみたいな感覚を覚える。

main = f1 1

f1 101 = return ()
f1 n = print n >> f2 (n + 1)

f2 n = print n >> f1 (n + 1)
0497デフォルトの名無しさん
垢版 |
2019/06/21(金) 17:24:35.02ID:UUUS7pJl
#!/bin/sh

echo '1から100まで入力してください。'
read n
echo $n
0498デフォルトの名無しさん
垢版 |
2019/06/21(金) 17:40:03.54ID:RHusABfj
>>417
屁理屈ではあるが、自分自身を呼び出すのでは無く、
別の関数の引数に渡しているので厳密には再帰では無い。
かと言って相互再帰でも無い。

Haskell

main = f 1

f = fa f

fa _ 101 = return ()
fa fb n = print n >> fb (n + 1)
0500デフォルトの名無しさん
垢版 |
2019/06/21(金) 17:56:02.69ID:VCA9CZc/
>>498
何にしてもインクリメントしてる時点でループ的な繰り返しを期待しているわけだから
まあ負けだよね(負けでも面白くはできる。為念)
0502デフォルトの名無しさん
垢版 |
2019/06/21(金) 19:58:05.85ID:RHusABfj
>>500

>>417のネタバレ見ても6個中5個はインクリメントかデクリメント使ってるんだが。。。

・再帰は使ってない

・関数faも、fa (print.even) 1とすると

1
True(2は偶数なのでTrue)

と表示して終わるだけなので、それ単体ではmapの様なループの代わりの関数では無い

・ループ命令はHaskellにそもそも無い

十分条件は充してる。
0503デフォルトの名無しさん
垢版 |
2019/06/21(金) 21:26:57.88ID:uBc0RisT
必死だなでも負けは負けだそして何より面白さが皆無なのが致命的

厳密には再帰ではないが実質再帰と同じ効果を狙ってんだろ
それ以前に自身も屁理屈だといっちゃってる時点で、語るに落ちてるよ
0504デフォルトの名無しさん
垢版 |
2019/06/22(土) 01:32:31.17ID:zj+KJbMh
ここでは何か戦いが行われていたのか?
0506デフォルトの名無しさん
垢版 |
2019/06/22(土) 04:13:24.85ID:zj+KJbMh
>>417

#!/bin/sh

echo '1から100まで'
0512デフォルトの名無しさん
垢版 |
2019/06/22(土) 12:27:47.34ID:Tw+E6LX+
お題:プログラミングのお題が与えられるので、それに対する解答を回答するプログラ厶を作りなさい。
0513デフォルトの名無しさん
垢版 |
2019/06/22(土) 12:42:30.81ID:jGjp1K63
>>512 Perl5

%h = ('プログラミングのお題' => 'それに対する解答');
while (<>) {
 chomp;
 $a = $h{$_};
 print $a ? "$a\n" : "しらんがな…(´・ω・`)ショボーン\n";
}


実行例
$ echo プログラミングのお題 | perl 14_512.pl
それに対する解答
~ $ echo たわけ | perl 14_512.pl
しらんがな…(´・ω・`)ショボーン
~ $ echo たいがいにせいよ | perl 14_512.pl
しらんがな…(´・ω・`)ショボーン
~ $
0514デフォルトの名無しさん
垢版 |
2019/06/22(土) 13:03:59.60ID:7MEAdJNr
(出題者側、回答者側のいずれに問題があるにせよ)
題意が汲み取れずくだらないお題だと思うのなら
回答せずにスルーすればいいやんというのがここのルール

回答した以上は特に題意を汲み取っていない的外れな回答の場合、
相応の批判にさらされることはある程度覚悟しないと
0517デフォルトの名無しさん
垢版 |
2019/06/22(土) 14:37:40.61ID:Kdr0peZW
>>514 出題者が質問に答えずに、出題の意味も説明できずに罵声を浴びせるだけと言う態度は問題だと思うけどな。
0519デフォルトの名無しさん
垢版 |
2019/06/22(土) 16:06:50.97ID:zj+KJbMh
>>516
「ひげダンス」と聞いて調べずすぐにわかる人がここに何人いるかなあ・・・
0520デフォルトの名無しさん
垢版 |
2019/06/22(土) 16:19:18.36ID:zj+KJbMh
>>507>>508
「このはし渡るべからず」を見た時の一休さんの気持ちが少しわかった。
0521◆QZaw55cn4c
垢版 |
2019/06/22(土) 16:47:52.80ID:ICCmixle
お題と回答
>>5 : 6 10 32 36 44
>>9 : 15 34 35 79
>>11 : 48 (78) 138-139 (140) 142 146 151 154
>>19 :
>>50, https://mevius.5ch.net/test/read.cgi/tech/1549160513/920 : 4 85 89
https://mevius.5ch.net/test/read.cgi/tech/1549160513/988 == >>164 : 59 61 167 169 189 192 201 202
>>90 : 95 96
>>99 :
>>200 : 214 219
>>215 : 227
>>220 : 232 240 248 256 268
>>235 : 236 237 238 239 247 249 259 342 353
>>320 : 321 323 327 330 340
>>322 : 325 328 329 331 332 339 341 358 359
>>362 : 367 369 370 371 374 379 380 382 414
0523デフォルトの名無しさん
垢版 |
2019/06/22(土) 22:52:07.59ID:tXrMFQcm
>>417
#pragma INTERRUPT int00

static int i = 0;
void int00(void)
{
if( i <= 100 ){

printf("%d\n", i++ );

}

}

あとは割り込みのテーブルに登録するだけ
0528デフォルトの名無しさん
垢版 |
2019/06/23(日) 07:40:02.44ID:b081fL0l
>>417
数値に(+1)の代わりに次の値を求めるsuccに変えるだけじゃインクリメントと同じになるので、
文字列でインクリメント相当の処理を実現してみた。
(succ 1 = 2, succ 'a' = 'b', succ False = True)

リストが全部'9'か見るのにand関数使った方が行数減らせるが、
and関数も再帰と見做せるので使わなかった。
('9'と同じ数だけ'0'を用意する処理も、リスト内包表記やlength関数が再帰やループに当たる)

Haskell

main = f "1"

f = fa f
― f n = fa f n を部分適用で見掛け上の変数を減らした

fa _ "101" = return ()
fa fb "9" = putStrLn "9" >> fb "10"
fa fb "99" = putStrLn "99" >> fb "100"
fa fb "100" = putStrLn "100" >> fb "101"
fa fb [x,'9'] = putStrLn [x,'9'] >> fb [succ x,'0']
fa fb [x,y] = putStrLn [x,y] >> fb [x,succ y]
fa fb [y] = putStrLn [y] >> fb [succ y]
0530デフォルトの名無しさん
垢版 |
2019/06/23(日) 09:54:46.04ID:YCKftoca
>>417
bb=1;echo $bb >/tmp/gg; watch -n 0.5 "bb=\`cat /tmp/gg\`; echo \$bb; if [ \$bb -eq 100 ]; then exit; fi; bb=\$((bb+1)); echo \$bb >/tmp/gg; "
0531デフォルトの名無しさん
垢版 |
2019/06/23(日) 11:21:05.15ID:PuD19qMM
>>527
では君はいままで自分がわからない問題が出題されたときは
問題にケチをつけてたのかね? そういうのやめてくれないかね
ちなみに僕はPart0のころからいるいわばこのスレの主だ
0533デフォルトの名無しさん
垢版 |
2019/06/23(日) 11:53:42.86ID:PuD19qMM
>>532
同じじゃないよ
何でもかんでも一緒にするんじゃない
ケツを出せお尻ペンペンだ!
0534デフォルトの名無しさん
垢版 |
2019/06/23(日) 11:59:27.35ID:PuD19qMM
議論を整理しよう

主の意見
・問題がわからなかったら問題が悪いと言うんじゃなくて無視しよう

木偶の坊の回答者の意見
・問題がわからなかったら問題に文句言うんだ <= これがダメ
0536デフォルトの名無しさん
垢版 |
2019/06/23(日) 12:03:05.58ID:CwGow/FI
>>531
桃白白改めミスターポポ改めピラフ改めピッコロさん、いい加減にしろ
0537デフォルトの名無しさん
垢版 |
2019/06/23(日) 12:03:58.87ID:PuD19qMM
>>535
あからさまではないからええんやで
0539デフォルトの名無しさん
垢版 |
2019/06/23(日) 12:07:42.20ID:HeOsQws8
>>534 問題が解らなければ出題者に聞くのがまず第一だろ。 そして出題者は質問に答える義務がある。
0540デフォルトの名無しさん
垢版 |
2019/06/23(日) 12:25:37.87ID:xc930vdW
>>537
じゃあこれはあからさま?
var n=1,t=setInterval(()=>{if(n<=100){console.log(n);n++;}else{clearInterval(t);}},0);
0541デフォルトの名無しさん
垢版 |
2019/06/23(日) 12:31:57.22ID:HeOsQws8
>>540 どうでもいいんじゃない? 自分がこれで良いと思えば良いんだよ。

誰にもあからさまと言う基準は作れない。 プログラムの中のループと言えばそうなるけどな。
ただ、サンプルの中でもイベントを使う方法は載ってたからOK なんじゃないのかな。

もうどうでも良いよ。
0542デフォルトの名無しさん
垢版 |
2019/06/23(日) 12:41:42.98ID:PuD19qMM
>>538
あからさまではないんや!!

>>540
それもあからさまにループしてない良いコードと言えます
0543デフォルトの名無しさん
垢版 |
2019/06/23(日) 12:42:42.10ID:PuD19qMM
>>539
義務なんてない
会話の裁量はケースバイケースや
0545デフォルトの名無しさん
垢版 |
2019/06/23(日) 12:49:22.24ID:PuD19qMM
>>544
我スレの神なり
0546デフォルトの名無しさん
垢版 |
2019/06/23(日) 12:50:21.23ID:PuD19qMM
議長として議論を執行する
0549デフォルトの名無しさん
垢版 |
2019/06/23(日) 13:37:18.23ID:CFRhe1LU
全部のコードをいちいち見てないし、二番煎じということを指摘するには十分だろ
0550デフォルトの名無しさん
垢版 |
2019/06/23(日) 13:40:05.34ID:MlHMJpT5
>>545
桃白白改めミスターポポ改めピラフ改めピッコロさん、いい加減にしろ
0551デフォルトの名無しさん
垢版 |
2019/06/23(日) 14:01:14.90ID:0sdWkE2M
ID:PuD19qMM は多分クソみたいな出題してボロカスに叩かれたことがあるんでしょ
叩かれたこと無いって多分レスすると思うけど、きっとあるんでしょ
0554デフォルトの名無しさん
垢版 |
2019/06/23(日) 17:32:48.34ID:JIIa3Mhw
>>531

> ちなみに僕はPart0のころからいるいわばこのスレの主だ

明記しとけ
つかスレの主ちがうじゃん
0557◆QZaw55cn4c
垢版 |
2019/06/23(日) 21:25:20.51ID:DC/NnmXU
お題
1) √2 を小数点以下 1000 桁算出せよ
2) n ∈Z, 1 <= n <= 100 を与えたとき√n を小数点以下1000 桁算出せよ
0558デフォルトの名無しさん
垢版 |
2019/06/23(日) 21:28:12.22ID:+RY3MuQ7
>>555 Squeak Smalltalk

(PolygonMorph
shapeFromPen: [:pen |
| factor |
factor := Float pi / 100.
pen place: 0@0.
0 to: 200 do: [:x | pen goto: x @ ((x * factor) sin / factor)]]
color: Color transparent
borderWidth: 2
borderColor: Color red) makeOpen; position: Display center; openInWorld
0559487
垢版 |
2019/06/23(日) 22:07:30.94ID:K2cXmmzo
>>388 Java
https://ideone.com/9d18x4

>>553
分割荒くしたらもっと早くなったよ
x=13194120658951(=2097151^3-2097150^3)以下に6通り見つからなかったが
0560デフォルトの名無しさん
垢版 |
2019/06/23(日) 22:46:35.00ID:+RY3MuQ7
>>557 Pharo/Squeak Smalltalk

| sqrt |
sqrt := [:n :m |
| a b nDigits intDigits str |
a := 5 * n. b := 5.
nDigits := m + (intDigits := (n sqrt log + 1) asInteger )+ 1.
[:exit | [
a >= b ifTrue: [a := a - b. b := b + 10] ifFalse: [
b log > nDigits ifTrue: [exit value] ifFalse: [
a := a * 100. b := b // 10 * 100 + (b \\ 10)
]
]
] repeat] valueWithExit.
((str := b asString) first: intDigits), '.', ((str allButFirst: intDigits) first: m)
].

((1 to: 100) collect: [:n | n -> ((sqrt value: n value: 1000) contractTo: 30)]) asStringWithCr

"=> 1->'1.000000000000...0000000000000'
2->'1.414213562373...8229518488472'
3->'1.732050807568...8363954959381'
4->'2.000000000000...0000000000000'
5->'2.236067977499...0407072278724'
6->'2.449489742783...7009535324726'
7->'2.645751311064...4698120004300'
<snip>
97->'9.848857801796...5854929396030'
98->'9.899494936611...7606629419304'
99->'9.949874371066...6373124778344'
100->'10.00000000000...0000000000000' "
0561デフォルトの名無しさん
垢版 |
2019/06/24(月) 01:26:06.66ID:oP64UM4n
>>553 あのさ、何か言いたいのはわかるけど、リンクくらいまともに貼ろうよ、
カンマで区切られたスレなんて俺のブラウザでは辿れないし、リンク先のページもどれがなんなのかわからないし、自分が勝手に思ってても人には伝わらないよ。
よくそんなのでプログラムの世界で生きてるね。 クビにならないことを祈るよ。
0562デフォルトの名無しさん
垢版 |
2019/06/24(月) 01:56:20.12ID:JSF3ka2M
>>557
bc

scale=1000
sqrt(2)
for (n = 1; n <= 100; n++) sqrt(n)
0563デフォルトの名無しさん
垢版 |
2019/06/24(月) 06:28:51.10ID:PKUWjPMB
>>555 Lua
prrint("∿")
0565デフォルトの名無しさん
垢版 |
2019/06/24(月) 14:11:03.35ID:BXNZhLwW
>>555 Python numpy , matplotlib

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0, 10, 100)
y = np.sin(x)
plt.plot(x, y)
0573蟻人間 ◆T6xkBnTXz7B0
垢版 |
2019/06/24(月) 18:33:31.05ID:oK/rIQPy
お題: ベルトコンベヤで左から右へチーズケーキが不定期に断続的に供給される。Aさん、Bさん、Cさんは右から順番にチーズケーキを食べる。
ただし、AさんはBさんより食べる速度が早い。BさんはCさんより食べる速度が早い。お腹一杯になるとしばらく食べられない。
これをマルチスレッドで再現せよ。
0574デフォルトの名無しさん
垢版 |
2019/06/24(月) 18:40:26.97ID:7jtxfSjt
>>570 Squeak Smalltalk

(PolygonMorph
shapeFromPen: [:pen |
| lemniscate factor |
lemniscate := [:θ | θ cos / (1 + θ sin squared) @ (θ sin * θ cos / (1 + θ sin squared))].
factor := 100.
pen up.
0 to: 360 do: [:deg | pen goto: (lemniscate value: deg degreesToRadians) * factor; down]]
color: Color transparent
borderWidth: 2
borderColor: Color red) position: Display center; openInWorld

"=> https://i.imgur.com/CiUeI8I.png "
0575蟻人間 ◆T6xkBnTXz7B0
垢版 |
2019/06/24(月) 19:18:23.37ID:oK/rIQPy
お題: あなたは宇宙時代の靴屋さんだ。宇宙人の足底の形状データが二次元多角形ベクトルデータとして与えられる。多角形が円に収まるように円形の靴の底を設計せよ。
0576◆QZaw55cn4c
垢版 |
2019/06/24(月) 19:34:41.44ID:SbfV+wvC
>>561
>自分が勝手に思ってても人には伝わらないよ。

ほう、私の記述が不十分というわけですか?
しかし、

>カンマで区切られたスレなんて俺のブラウザでは辿れないし

これは特に「アンカー」というのですよ。「アンカー」、この単語をご存知なかったのですか?

>カンマで区切られたスレなんて俺のブラウザでは辿れないし

私の専用ブラウザでは十分にたどれますよ、おま環でしょう、おま環、おま環(爆笑)

>リンク先のページもどれがなんなのかわからないし、

QZ 専用スレのことですか
そもそも専用スレを持っているということ自体が特筆に値するでしょう
あなたも専用スレを作ってみたらいい、一発で削除されますよ

それに、そこでは私は、私が何を目的に何を書いたのか一目瞭然ですね
必要にして十分とはまさにこのことでしょう
過去ログはお布施をすれば自由に取り込めます、おま環、おま環(爆笑)

>よくそんなのでプログラムの世界で生きてるね。 クビにならないことを祈るよ。

あなたが5ch で不自由な制約のもとにあるのはよくわかりました、ひとことでいってお布施が足りない、まずはお布施をすることですね
私は職業プログラマでないので、すでにプログラムの世界ではクビになっています、ついでに現在の職業もクビになりそうです…いや、ラプラス変換の部分分数展開の計算が合わなくて苦労しているのですよ
部分分数展開については、近いうちにこのスレのお題にしますよ、乞うご期待!
0579蟻人間 ◆T6xkBnTXz7B0
垢版 |
2019/06/24(月) 19:53:04.45ID:oK/rIQPy
お題: 辞書のように頭文字を何文字か入力すると該当する単語の意味を調べられるようなシステムのことを「辞書型エキスパートシステム」と言います。
あなたの得意分野に関する辞書型エキスパートシステムを作りなさい。
例) HTML辞書システム
0582蟻人間 ◆T6xkBnTXz7B0
垢版 |
2019/06/24(月) 20:10:50.04ID:eqHVB1zL
面白いシューティングゲーム作るなら、数式とグラフの知識は必須だからな。
x→yという対応によるx-yグラフがあれば、
時刻t→(x, y)という対応によるグラフもある。多分高校で習うから安心しろ。
0583デフォルトの名無しさん
垢版 |
2019/06/24(月) 20:13:33.00ID:BXNZhLwW
>>576 やはり思った通りの人物像だったな。 自分の勝手な思い込みで人に伝わると思ってる。
そりゃどんな所に勤めても長続きしないだろうな。 相手の事を思いながら会話しないとダメなんだよ。

自分は何も悪くない、悪いのは相手だと言うのが最大の欠点。 多分病気だと思うから一度病院に行ってみたら?

ラプラス変換なんて持ち出せば相手は黙るだろうとか思ってる馬鹿さ加減。
あんな簡単な物で躓いてるのは多分高校の数学で落ちこぼれてたんだろうな。 いや中学の算数が解っていないのかも。
計算を楽にするためにラプラス変換があるのに。
0585◆QZaw55cn4c
垢版 |
2019/06/24(月) 20:37:30.25ID:SbfV+wvC
>>583
>多分病気だと思うから一度病院に行ってみたら?
すでにして飲んでるお薬は
https://en.wikipedia.org/wiki/Chlorpromazine#/media/File:Thorazine_advert.jpg

>計算を楽にするためにラプラス変換があるのに。

浅はかな理解ですね、計算のためにラプラス変換?
馬鹿もここまでくると気の毒に思えてきます
そんな人のために次のページが構築されつつあります、誰が書いてるのかは私はしらないけど
https://ja.wikibooks.org/wiki/%E5%88%B6%E5%BE%A1%E3%81%A8%E6%8C%AF%E5%8B%95%E3%81%AE%E6%95%B0%E5%AD%A6/%E7%AC%AC%E4%B8%80%E9%A1%9E
0590デフォルトの名無しさん
垢版 |
2019/06/24(月) 21:57:47.94ID:BXNZhLwW
>>585 悪かった、本物とはさすがに思わなかった。 お大事に。
むしろこんな所にも出入りしない方が良いと思うけどな。

所で今 5ch サーバーがおかしいね。
0591◆QZaw55cn4c
垢版 |
2019/06/24(月) 22:04:21.59ID:SbfV+wvC
>>590
浅はかな理解ですね、そもそもここに出入りしている時点で重大な問題を孕んでいることに気がつかないとでもいうのですか?
0592デフォルトの名無しさん
垢版 |
2019/06/24(月) 22:30:59.92ID:xRw0rPof
あーQZはまともに相手しないで放置すればいいよ
こいつ複素解析も知らない癖に留数定理がどうのこうのとか騙ってて
突っ込まれると「全然知りません」と開き直るような奴だからな
それに日本人じゃないらしい
0594デフォルトの名無しさん
垢版 |
2019/06/24(月) 22:53:08.06ID:gDOJvwaR
>>592
懐かしいな
以前、複素数にまで拡張された指数関数が一般に多価関数になるということが解らなくて
わざわざ他の板まで行って醜態を晒してたなこいつ
0595◆QZaw55cn4c
垢版 |
2019/06/24(月) 23:24:54.85ID:SbfV+wvC
>>592
それは記憶違いでは?
当時「計算練習として複素関数論をやればいいのでは?」という意見に対して「留数定理は忘れた」と発言しただけですよ、実際もう忘れましたし、それにしても昔のことをよく覚えていますよね、この執念はいったいなんなんでしょうか?

>>594
このスレのお題「e^z = -1 たる z ∈C を求めよ」にてずいぶんと勉強させていただきましたが、それもこのスレだけの話で、わざわざ他のスレや他の板に行った覚えはありませんね、証拠を出せますか?

>>593
ラプラス変換の教科書に当時メモ書きした式変形ですら、もう自分でも理解できなくなっているのは認めましょう…
0596デフォルトの名無しさん
垢版 |
2019/06/24(月) 23:29:01.25ID:gDOJvwaR
>>595
確か数学板で聞いてただろお前
そのリンクをこのスレに貼ってたはずだから気になるなら自分で調べろ
0600デフォルトの名無しさん
垢版 |
2019/06/25(火) 12:16:33.88ID:/8kFlQVi
お題
7月中の、3人の空いている日のリストがあります。
3人の内、2人以上が空いている日と、名前を求めよ

A
2019/07/05
2019/07/10
2019/07/15
2019/07/20

B
2019/07/08
2019/07/10
2019/07/20

C
2019/07/15
2019/07/20
2019/07/25
0602600
垢版 |
2019/06/25(火) 13:41:11.08ID:/8kFlQVi
書式は、どうでも良い。
こんな感じで

2019/07/10 A B
2019/07/10, A, B
0603デフォルトの名無しさん
垢版 |
2019/06/25(火) 15:28:07.62ID:AwR7wU0d
Hash使うとすごく簡単にできると思うが、Hashへの値のセットをプログラム中に書こうとすると、それがそのまま答えになってしまいそうな予感w
0604デフォルトの名無しさん
垢版 |
2019/06/25(火) 16:12:29.73ID:i92jGjxO
>>573 Python3.6 ideonのpython は3.5で動かないが、下の方に出力サンプルを張り付けてあるからそれを見てください。
https://ideone.com/JqcYMA

出力サンプルを少しだけここに張り付け
開店時間= 0.0
Aの取皿開始  speed=0.7 kosu=0 時刻は 0.0
Bの取皿開始  speed=1.0 kosu=0 時刻は 0.01
Cの取皿開始  speed=1.4 kosu=0 時刻は 0.02
★★マグロ が出来た時刻=0.03 作成間隔 t=0.30
Cがマグロを食った 作成時刻=0.03
★★カッパ が出来た時刻=0.33 作成間隔 t=0.10
Aがカッパを食った 作成時刻=0.33
★★ウニ が出来た時刻=0.43 作成間隔 t=0.10
★★上トロ が出来た時刻=0.53 作成間隔 t=0.10
Cがウニを食った 作成時刻=0.43
Cが満腹 休むよ 時刻=0.63
Aが上トロを食った 作成時刻=0.53
★★エンガワ が出来た時刻=0.64 作成間隔 t=0.10
★★マグロ が出来た時刻=0.74 作成間隔 t=0.10
Bがエンガワを食った 作成時刻=0.64
Bがマグロを食った 作成時刻=0.74
★★マグロ が出来た時刻=0.74 作成間隔 t=0.10
Bがエンガワを食った 作成時刻=0.64Bがマグロを食った 作成時刻=0.74
★★カッパ が出来た時刻=0.84 作成間隔 t=0.10
★★ウニ が出来た時刻=0.94 作成間隔 t=0.10
★★上トロ が出来た時刻=1.04 作成間隔 t=0.10
Aの取皿開始  speed=0.7 kosu=1 時刻は 1.11
Aがカッパを食った 作成時刻=0.84

★★エンガワ
0605デフォルトの名無しさん
垢版 |
2019/06/25(火) 16:57:19.63ID:/YrhpcLJ
>>600 Pharo/Squeak Smalltalk

| data dic |

data := {
#A -> #('2019/07/05' '2019/07/10' '2019/07/15' '2019/07/20').
#B -> #('2019/07/08' '2019/07/10' '2019/07/20').
#C -> #('2019/07/15' '2019/07/20' '2019/07/25')
}.

dic := Dictionary new.
data do: [:assoc |
assoc value do: [:date | (dic at: date ifAbsentPut: [OrderedCollection new]) add: assoc key].
].
dic associations sort
select: [:assoc | assoc value size >= 2]
thenCollect: [:assoc | assoc value: assoc value asArray]


"=> {'2019/07/10'->#(#A #B) . '2019/07/15'->#(#A #C) . '2019/07/20'->#(#A #B #C)} "
0607デフォルトの名無しさん
垢版 |
2019/06/25(火) 17:27:11.68ID:Y04/VZ6Y
#!/usr/bin/env perl
use List::MoreUtils;
@A = qw( 2019/07/05 2019/07/10 2019/07/15 2019/07/20);
%A = map {$_, 1} @A;

@B = qw( 2019/07/08 2019/07/10 2019/07/20);
%B = map {$_, 1} @B;

@C = qw( 2019/07/15 2019/07/20 2019/07/25);
%C = map {$_, 1} @C;

SEARCH:
for ( List::MoreUtils::uniq (@A, @B, @C) ){
if ($A{$_} && $B{$_} && $C{$_}){
print "everyone is free at $_\n";
next SEARCH;
}
if ($A{$_} && $B{$_} ){
print "A and B is free at $_\n";
}
if ($B{$_} && $C{$_}){
print "B and C is free at $_\n";
}
if ($A{$_} && $C{$_}){
print "A and C is free at $_\n";
}
}
0611デフォルトの名無しさん
垢版 |
2019/06/25(火) 18:13:23.94ID:Y04/VZ6Y
>>600
>607はあまりにも酷かったので、修正
#!/usr/bin/env perl
use List::MoreUtils;
@A = qw( 2019/07/05 2019/07/10 2019/07/15 2019/07/20 );
%A = map {$_, A} @A;

@B = qw( 2019/07/08 2019/07/10 2019/07/20 );
%B = map {$_, B} @B;

@C = qw( 2019/07/15 2019/07/20 2019/07/25 );
%C = map {$_, C} @C;

for $date ( List::MoreUtils::uniq (@A, @B, @C) ){
for $someone_is_free_at (\%A, \%B, \%C){
push(@free_men, $$someone_is_free_at{$date}) if $$someone_is_free_at{$date};
}
print "@free_men are free at $date\n" if (@free_men > 1);
@free_men = ();
}


出力
A B are free at 2019/07/10
A C are free at 2019/07/15
A B C are free at 2019/07/20
0612蟻人間 ◆T6xkBnTXz7B0
垢版 |
2019/06/25(火) 18:43:25.69ID:CrMrKXln
ユーチューブのおかげで誰でも動画を投稿してお金を稼げる時代になった。
自分のアイデアをvisualizeし、面白い動画にして投稿すれば、収益化できる。
プログラミングをマルチメディアやGUIに対応させることは当たり前。
あなたもテック系ユーチューバーになろう。

動画は変化する静止画の連続であり、スクリーンショットで一枚一枚画像を撮ってテキトーなツールでつなげれば動画に出来る。
0614デフォルトの名無しさん
垢版 |
2019/06/25(火) 18:50:16.61ID:UDO8hU+H
>>612
手頃で簡単な動画コンテナ知らない?
AVIのフォーマット調べたらRIFF吐かないといけなくて、そこからかよ!って感じだった。
0615蟻人間 ◆T6xkBnTXz7B0
垢版 |
2019/06/25(火) 18:52:08.76ID:CrMrKXln
お題: あみだくじを解け。n本の縦線を上下に平行に引き、上から順番に二つの縦線を結ぶ形でいくつかm本の横線を引く。下側の縦線の端の一つにゴールを設定するとき、あみだくじの
ルールに従ってゴールに到達する縦線の端のスタート地点を求めよ。
0618デフォルトの名無しさん
垢版 |
2019/06/25(火) 19:17:59.99ID:4Msitu63
>>616 おいこら、出題ペースが早すぎるぞ。解答もほとんど出ていない状態で次のなんて出すなよ。
0621蟻人間 ◆T6xkBnTXz7B0
垢版 |
2019/06/25(火) 20:43:10.45ID:ayyd1Kg3
面白い動画たーくさん作って早く労働者階級を卒業しよっぜ。
0624デフォルトの名無しさん
垢版 |
2019/06/26(水) 01:05:18.27ID:fhfivptN
>>575 >>623 それって、>>11 の入口問題だな。 俺も>>11 関連で知ったが、最小包含円って言葉は、このスレで何度か出てきてるぞ、
具体的な宇宙人の足跡データが、>>11 として最小包含円を求めよとした方がより具体的だな。 いくつか答えが出てるけど。

具体的なデーターを示さないと答えがバラバラになるぞ。 蟻人間の問題ってあやふやなのが多いな。
0625デフォルトの名無しさん
垢版 |
2019/06/26(水) 01:11:38.67ID:QUl0UMlC
>>600 Perl5

@a = map{sprintf"2019/07/%02d",$_} 1..31;
$h{$_}{A}=1 for qw{2019/07/05 2019/07/10 2019/07/15 2019/07/20};
$h{$_}{B}=1 for qw{2019/07/08 2019/07/10 2019/07/20};
$h{$_}{C}=1 for qw{2019/07/15 2019/07/20 2019/07/25};
@b = grep{1<keys %{$h{$_}}} @a;
print "$_ @{[keys %h{$_}]}\n" for @b;


実行結果
~ $ perl 14_600.pl
keys on reference is experimental at 14_600.pl line 6.
2019/07/10 B A
2019/07/15 C A
2019/07/20 B A C
0627デフォルトの名無しさん
垢版 |
2019/06/26(水) 01:16:52.13ID:QUl0UMlC
>>625 スマソ「keys on reference is experimental at 14_600.pl line 6.」が出ちゃってた…orz

>>600 Perl5 チョット修正
@a = map{sprintf"2019/07/%02d",$_} 1..31;
$h{$_}{A}=1 for qw{2019/07/05 2019/07/10 2019/07/15 2019/07/20};
$h{$_}{B}=1 for qw{2019/07/08 2019/07/10 2019/07/20};
$h{$_}{C}=1 for qw{2019/07/15 2019/07/20 2019/07/25};
@b = grep{1<keys %{$h{$_}}} @a;
print "$_ @{[keys %{$h{$_}}]}\n" for @b;

実行結果
~ $ perl 14_600.pl
2019/07/10 B A
2019/07/15 A C
2019/07/20 B C A
0630デフォルトの名無しさん
垢版 |
2019/06/26(水) 08:13:01.09ID:Qt7BED0r
>>555 Lua
prrint("ん")
0631デフォルトの名無しさん
垢版 |
2019/06/26(水) 09:27:43.17ID:4ftm39hn
>>555
さて、そろそろわしの出番のようぢゃな。


#!/bin/sh

echo 'サインカーブ'
0632デフォルトの名無しさん
垢版 |
2019/06/26(水) 10:05:25.43ID:I0iq5RkX
整数が複数与えられて、そのうちの5つの積が最大になるものってどうやって選べばいいの?
絶対数でソートしても、負数が奇数個だとマイナスだし頭がこんがらがる
0633デフォルトの名無しさん
垢版 |
2019/06/26(水) 10:27:17.99ID:qQlb55ju
正数の大きい方から5個
正数の大きい方から3個と負数の絶対数の大きい方から2個
正数の大きい方から1個と負数の絶対数の大きい方から4個
で比較すれば?
0634デフォルトの名無しさん
垢版 |
2019/06/26(水) 10:35:24.88ID:qQlb55ju
別に正数とか負数とか気にしないでも良いか
ソートして、上から5個 上から3個と下から2個 上から1個と下から4個 の中で最大のものを選べば
0635デフォルトの名無しさん
垢版 |
2019/06/26(水) 12:11:39.42ID:4ftm39hn
>>634
全て負の値の場合は?
それと気になるのが0。
0637デフォルトの名無しさん
垢版 |
2019/06/26(水) 12:52:21.84ID:4t4MRNDi
>>632
思考停止して全パターン出して最大値を取る。
あえて5個以下だとエラー。
対策するなら関数fで長さが5個以下か判定すれば良い。

昔、似た様な問題でリスト内包表記と再帰を組み合わせて、
スマートな方法を誰か書いてたの見たけど忘れた。

Haskell

main = f [(-1),4,(-2),1,3,2]

f xs = maximum [product [a,b,c,d,e]|
a <- xs, b <- xs, c <- xs, d <- xs, e <- xs,
a /= b, a /= c, a /= d, a /= e, b /= c, b/= d, b /= e, c /= d, c /= e, d /= e]
0638デフォルトの名無しさん
垢版 |
2019/06/26(水) 15:36:37.02ID:GwE3QISY
>>637 おいおい、いくつの中から5個取り出すかわからないんだぞ。 100000個の中から5個取り出すと結構な時間がかかるだろ。
どんだけの組み合わせになるんだよ。
0639デフォルトの名無しさん
垢版 |
2019/06/26(水) 15:53:36.43ID:4t4MRNDi
>>638
だから思考停止っって書いてるんよ^^;
0640デフォルトの名無しさん
垢版 |
2019/06/26(水) 16:01:02.80ID:4t4MRNDi
>>632

Listモジュールに関数あった。。。

Haskell

import Data.List

main = print $ f [(-1),4,(-2),1,3,2]

f = maximum.map product.permutations
0641デフォルトの名無しさん
垢版 |
2019/06/26(水) 18:21:48.58ID:D6IEM3tk
全部負なら、必ず答えも負になるんだから選ぶのは上から5個で良くないか
つまり634で合ってると思う
0も問題無いな、どこにあっても網羅されてる
0642デフォルトの名無しさん
垢版 |
2019/06/27(木) 01:55:36.37ID:sxRhjDp7
>>600
perl5 ワンライナー

perl -ne 'if(/^(.*?),(.*)$/){$d{$2}{$1}=1}END{for(sort keys%d){if(keys%{$d{$_}}>=2){print"$_ ".join(",",sort keys%{$d{$_}})."\n"}}}'

入力

A,2019/07/05
A,2019/07/10
A,2019/07/15
A,2019/07/20
B,2019/07/08
B,2019/07/10
B,2019/07/20
C,2019/07/15
C,2019/07/20
C,2019/07/25

出力

2019/07/10 A,B
2019/07/15 A,C
2019/07/20 A,B,C
0645デフォルトの名無しさん
垢版 |
2019/06/27(木) 10:12:29.88ID:kVdr/MgG
>>637
試した限りじゃ上手く動いてる。
もっとスマートな書き方出来ないものか。。。

Haskell

import Data.List

main = (print.f) [9,(-5),3,2,1,8,(-4)]

f xs |(odd.length) b && (length.filter (<0)) xs > 1 =
promax
((map snd.f') a ++ (map snd.take (5 - (length.f') a)) b')
((map snd.take 5.abslst) xs)
where
a = (filter ((>=0).snd).take 5.abslst) xs
a' = (filter ((>=0).snd).abslst) xs
b = (filter ((< 0).snd).take 5.abslst) xs
b' = (filter ((< 0).snd).abslst) xs

f' xs |length a > length b = init xs
f' _ = (take (5 - (length.init) b)) a'
f xs = promax ((take 5.reverse.sort) xs) ((map snd.take 5.abslst) xs)

promax xs ys |product xs > product ys = xs
promax _ ys = ys

abslst xs = reverse.sort $ zip (map abs xs) xs
0646デフォルトの名無しさん
垢版 |
2019/06/27(木) 10:13:36.13ID:kVdr/MgG
promax xs ys |product xs > product ys = xs
promax _ ys = ys

abslst xs = reverse.sort $ zip (map abs xs) xs
0649デフォルトの名無しさん
垢版 |
2019/06/27(木) 17:17:24.80ID:fA/gCr42
>>632 Sqeueak Smalltalk

| data stream selection set numNegs |
data := #(9 -5 -3 2 1 8 -4).
stream := ((data copyWithout: 0) sortBy: #abs descending) readStream.
set := Set with: (selection := (stream next: 5) asArray).
numNegs := selection count: #negative.
(numNegs > 0 and: [numNegs odd]) ifTrue: [
| nextNeg nextPos lastPosIdx lastNegIdx |
nextNeg := nextPos := nil.
lastPosIdx := selection findLast: #positive.
lastNegIdx := selection findLast: #negative.
[(nextNeg isNil or: [nextPos isNil]) and: [stream atEnd not]] whileTrue: [
| next |
next := stream next.
(lastPosIdx > 0 and: [nextNeg isNil] and: [next negative])
ifTrue: [set add: (selection copyWithoutIndex: lastPosIdx), {nextNeg := next}].
(lastNegIdx > 0 and: [nextPos isNil] and: [next positive])
ifTrue: [set add: (selection copyWithoutIndex: lastNegIdx), {nextPos :=next}]
].
].
set detectMax: [:xs | xs reduce: #*]

"=> #(9 8 -5 -4 2) "


Pharo Smalltalk版 → http://ws.stfx.eu/OK6PHG96QEY8
0650デフォルトの名無しさん
垢版 |
2019/06/28(金) 01:49:16.31ID:Vk0oU0Nl
>>632 haskell
import Data.List
f xs = if length xs < 5 then undefined else (maximumBy(\ x y ->compare(product x)(product y))$zipWith(++)(reverse.inits.(take 5).reverse.sort$xs)(inits.(take 5).sort$xs))

f [9,-5,-3,2,1,8,-4]
-- > [9,8,2,-5,-4]
0652デフォルトの名無しさん
垢版 |
2019/06/29(土) 07:48:16.22ID:FqBWYLWj
あまりにも簡単すぎる問題は控えて欲しいな、たまになら休憩として良いけど。
0654デフォルトの名無しさん
垢版 |
2019/06/29(土) 11:36:54.32ID:t9YicpKG
>>651 Perl5 簡単だけれども、解いてみた

<>=~/(\w+)(\W+)(\w+)(\W+)/;
print "$3$2$1$4\n";

実行結果
~ $ echo 'Hello, World!' | perl 14_651.pl
World, Hello!

※英単語部は任意です
0655デフォルトの名無しさん
垢版 |
2019/06/29(土) 13:00:42.80ID:Rvf+oTMW
お題:全単射を満足する最小桁数を求める
任意の整数域(-10000..10000とか)を引数とする単調増加/減少関数f(x)に対して、
その計算結果を有効数字n桁で丸めたものをy=round(f(x), n)とする。
xとyの関係が全単射になる(異なるxに対して、同じyにならない事)
最小のnを求めよ。
ttps://ja.wikipedia.org/wiki/%E5%85%A8%E5%8D%98%E5%B0%84

xの値域及びf(x)は回答者が適切と思われるものでよい。
0656デフォルトの名無しさん
垢版 |
2019/06/29(土) 13:27:37.67ID:HRfvRfYw
fは2^N → Rでいいの?
2^Nは自然数の冪集合ね
てか括弧内で全射が無視されてんのが謎
0659655
垢版 |
2019/06/29(土) 14:50:05.50ID:Rvf+oTMW
>>656
f(x)=x/1e4+42 但し xは整数で x∈[-10000, 10000]
とかの、もっと単純なヤツです(この例だとn=6)。

f(x)=10^x
とかだと、n=1なのは自明だし、
f(x)=c 但し cは任意の実定数
とかだと解は存在しないので、これらは除外して下さい。
0661デフォルトの名無しさん
垢版 |
2019/06/29(土) 15:37:47.69ID:mF/+Te8R
お題
与えられた画像ファイルを
適当なサイズに縮小・拡大
しモノクローム画像に変換
しアスキーアートに変換す
0665デフォルトの名無しさん
垢版 |
2019/06/29(土) 16:30:35.89ID:S1v50lfX
>>664 悪い悪い、問題を読み直したら、単語の入れ替えだけで記号の位置はそのままというような感じだな。
0667◆QZaw55cn4c
垢版 |
2019/06/29(土) 16:36:26.20ID:+oJyIv4Z
お題と回答
>>5 : 6 10 32 36 44
>>9 : 15 34 35 79
>>11=>>575 : 48 (78) 138-139 (140) 142 146 151 154
>>19 :
>>50, https://mevius.5ch.net/test/read.cgi/tech/1549160513/920 : 4 85 89
https://mevius.5ch.net/test/read.cgi/tech/1549160513/988 == >>164 : 59 61 167 169 189 192 201 202
>>90 : 95 96
>>99 :
>>200 : 214 219
>>215 : 227
>>220 : 232 240 248 256 268
>>235 : 236 237 238 239 247 249 259 342 353
>>320 : 321 323 327 330 340
>>322 : 325 328 329 331 332 339 341 358 359
0671デフォルトの名無しさん
垢版 |
2019/06/29(土) 16:59:14.03ID:S1v50lfX
>>669 安静にしてた方が良いと思うよ。 反発のない世界で触れ合うのは良いと思うけど、2ch/5ch みたいなところに出てくると、傷つくのは目に見えてる。

みるのが楽しければ、みるだけにとどめるとか。
0672デフォルトの名無しさん
垢版 |
2019/06/29(土) 20:21:36.23ID:YzN8MsSb
w3m https://mevius.5ch.net/test/read.cgi/tech/1558168409/ \
|perl -ne 'if (/^1/m){++$body};if (/^ ? \d+コメント$/m){$body=0} ; print if ($body)'\
| ./select_word_and_ancher.pl お題 \
| less

perl はこれ
https://paste.fedoraproject.org/paste/6R~aAhHAd3dYBSH0R8Dfhw

出力はこんなかんじだ
お題のレスが見れて、それにアンカしたレスが続くのを1フィールドとして
全部のお題に大してループする
https://i.imgur.com/WVCFus7.jpg
0675デフォルトの名無しさん
垢版 |
2019/06/29(土) 22:43:35.91ID:XRcaFM4Y
>>651のお題は
> お題: Hello, World!が入力されるのでHelloとWorldを入れ替えて表示せよ
なので、Hello, World!以外が入力されたら無視するかエラーを出すのが正しいのでは?w
0676◆QZaw55cn4c
垢版 |
2019/06/29(土) 22:50:01.35ID:+oJyIv4Z
>>675
それは過剰な設計では?
Hello, World! 以外が入力されたときにどう振舞うべきかについて >>651 には何らの記載がないので、何ら拘束されることがない
言い換えると、入力が Hello, World! 以外の場合には「どうふるまってもいい」と解釈するのが、論理学的に妥当…@だと思います
@:論理式「偽→真」=真、「偽→偽」=真からの類推です
0679デフォルトの名無しさん
垢版 |
2019/06/30(日) 01:26:45.54ID:V7r21EI6
>>677 Lua
a,b,c,d=io.read(5,2,5,1)
print (c..b..a..d)
0680デフォルトの名無しさん
垢版 |
2019/06/30(日) 01:41:37.13ID:V7r21EI6
>>679
アンカー間違えました
>>651 Lua
でした
0683デフォルトの名無しさん
垢版 |
2019/06/30(日) 08:04:20.61ID:uuDJgtvu
お題
#1234→◆gdyb21LQTc
#abcd→◆4vxxTEcn7p
#あいうえお→◆rXz1zlMT-L

左のトリップキーから右のトリップを返すアルゴリズムを探せ
0684デフォルトの名無しさん
垢版 |
2019/06/30(日) 08:39:27.77ID:XM+o4kuM
>>683
$ head text hash.sedscr
==> text <==
#1234→◆gdyb21LQTc
#abcd→◆4vxxTEcn7p
#あいうえお→◆rXz1zlMT-L

左のトリップキーから右のトリップを返すアルゴリズムを探せ

==> hash.sedscr <==
s/#1234/◆gdyb21LQTc/
s/#abcd/◆4vxxTEcn7p/
s/#あいうえお/◆rXz1zlMT-L/

$ cat text | sed -f hash.sedscr
◆gdyb21LQTc→◆gdyb21LQTc
◆4vxxTEcn7p→◆4vxxTEcn7p
◆rXz1zlMT-L→◆rXz1zlMT-L

左のトリップキーから右のトリップを返すアルゴリズムを探せ
0687デフォルトの名無しさん
垢版 |
2019/06/30(日) 18:48:21.28ID:TQbu+/Q+
>>678 Perl5(組合せ計算のモジュールはCPANにあるが言語処理系に標準で含まれるCOREモジュールではないので使わずに実装した)

@a=sort{$b<=>$a} qw{9 -5 -3 2 1 8 0 -4 -1 4 -2 1 3 2};
@b=splice @a,0,5;
splice @a,0,-4;
@c=(@b, @a); # 大きい方から5個と小さい方から4個,計最長9個
sub combi { # 組合せ
 my @s;
 if (my $n = shift) {
  while ($n <= @_) {
   my $t = shift;
   push @s, map{[$t, @$_]} combi($n - 1, @_);
  }
 } else {
  @s = ([]);
 }
 @s
}
@d = combi(5, @c); # 126個
use List::Util 'product';
@e = sort{$$b[0]<=>$$a[0]} map{[product(@$_), $_]} @d;
print "@{$e[0][1]} => $e[0][0]\n";

実行結果
~ $ perl 14_632.pl
9 8 4 -4 -5 => 5760
0689デフォルトの名無しさん
垢版 |
2019/07/01(月) 01:03:55.45ID:2xJWXsNl
>>632 Perl5 (CPANのMath::Combinatoricsモジュール使用)

use Math::Combinatorics;
use List::Util 'product';
@a=sort{$b<=>$a} qw{9 -5 -3 2 1 8 0 -4 -1 4 -2 1 3 2};
@b=splice @a,0,5;
splice @a,0,-4;
@c=(@b, @a);
@d=combine 5, @c;
@e=sort{$$b[0]<=>$$a[0]} map{[product(@$_), $_]} @d;

実行結果
~ $ perl 14_632_2.pl
9 4 8 -5 -4 => 5760
0691600
垢版 |
2019/07/01(月) 12:51:23.31ID:O1pDJEnN
>>600
Ruby で、
require 'date'

ary_A = %w(2019/07/05 2019/07/10 2019/07/15 2019/07/20)
ary_B = %w(2019/07/08 2019/07/10 2019/07/20)
ary_C = %w(2019/07/15 2019/07/20 2019/07/25)

# 文字列の配列から、ハッシュを作る。Date#jd は、ユリウス日。整数型
def make_hash( ary, name )
ary.each_with_object( { } ) {
| str, h | h[ Date.parse( str ).jd ] = [ str, name ] }
end

# ハッシュをマージする。h_1 を上書きする。slice で、位置1 から、1つだけ
def merge_hash( h_1, h_2 )
h_1.merge!( h_2 ) { |key, v_1, v_2| v_1 + v_2.slice( 1, 1 ) }
end

hash_A = make_hash( ary_A, "A" )
hash_B = make_hash( ary_B, "B" )
hash_C = make_hash( ary_C, "C" )

merge_hash( hash_A, hash_B )
merge_hash( hash_A, hash_C )

hash_A.select { |k, v| v.length >= 3 }.sort.each { |elem|
puts elem.last.join( ", " ) }
0693デフォルトの名無しさん
垢版 |
2019/07/03(水) 05:29:13.40ID:/Fyb2XSg
>>570 Lua
prrint("(X)")
0694デフォルトの名無しさん
垢版 |
2019/07/03(水) 13:00:21.17ID:0rGzsSa9
>>570
exho 八
0695デフォルトの名無しさん
垢版 |
2019/07/03(水) 23:21:16.00ID:S/aBv8fE
お題
直線状の(配列を使った)ライフゲームがある。ルールは、

1. 両隣が生きていれば、暑苦しいので死ぬ
2. 両隣が死んでいれば、寂しいので死ぬ
3. 両隣の内、片方だけが生きていれば、生きる

4. 両端の2つについては、隣が生きていれば生きるし、隣が死んでいれば死ぬ
5. すべてのマスの状態の変更は、同時にすること

下の初期値(1 ターン目)から初めて、状態が変わらなくなるのは、何ターン目か?
nターン目と、( n + 1 )ターン目が同じなら、nターン目を答える

ただし、漏れは検証していないので、100ターンを超えたら、終了してくださいw
* は生、. は死を表す

.*...**.*.***..
0696デフォルトの名無しさん
垢版 |
2019/07/04(木) 00:54:11.99ID:j53oJnyj
>>695 Pharo/Squeak Smalltalk

| map next turn |
map := '.*...**.*.***..' asArray collect: [:x | (x = $*) asBit].
next := [map allButFirst, {0} + ({0}, map allButLast) collect: [:x | (x = 1) asBit]].
turn := 1.
[map = (map := next value) or: [(turn := turn + 1) >= 100]] whileFalse.
^turn "=> 13 "
0701デフォルトの名無しさん
垢版 |
2019/07/04(木) 08:35:23.83ID:11vlC8ZO
>>695 ruby 13ターンで全滅
life = ' .*...**.*.***.. '
puts "%4d %s" % [1, life]
100.times{|gene|
life2 = ' ' * life.size
(life.size-2).times{|i| life2[i+1] = ((life[i] == '*') ^ (life[i+2] == '*'))? '*' : '.' } # rule 1, 2, 3, 4
break if life == life2
puts "%4d %s" % [gene+2, life2]
life = life2 # rule 5
}
0702デフォルトの名無しさん
垢版 |
2019/07/04(木) 09:15:04.08ID:49DxGPOe
プログラム組むまでもなく3ターンで終わりなんだけど解釈間違ってんのかな
0704695
垢版 |
2019/07/04(木) 16:13:36.89ID:vGw4d28b
生きるとは、新たに誕生する場合も、含めてください!
0706デフォルトの名無しさん
垢版 |
2019/07/04(木) 17:41:32.68ID:UVclwvu+
居ないときは両隣が生きていれば生まれる
(生きているときは 1. に従い死ぬ)
とかの方がいいんじゃない?
0707デフォルトの名無しさん
垢版 |
2019/07/04(木) 17:59:22.42ID:oZa6FYcv
>>695,704
つまりルール90の1次元セルオートマトンってことでいいのかの? (誕生無しの場合ルール18になる)

セル・オートマトン#1次元セル・オートマトン
https://ja.wikipedia.org/wiki/%E3%82%BB%E3%83%AB%E3%83%BB%E3%82%AA%E3%83%BC%E3%83%88%E3%83%9E%E3%83%88%E3%83%B3#1%E6%AC%A1%E5%85%83%E3%82%BB%E3%83%AB%E3%83%BB%E3%82%AA%E3%83%BC%E3%83%88%E3%83%9E%E3%83%88%E3%83%B3
0708デフォルトの名無しさん
垢版 |
2019/07/04(木) 22:15:57.84ID:Otr1Y9/T
お題: コマンド「stack」を実装しなさい

stackの仕様

$ stack push hoge

で文字列hogeをスタックにプッシュする

$ stack pop
hoge

でスタックに積んだ文字列をポップする
スタックが空の場合は何も表示しない
0709デフォルトの名無しさん
垢版 |
2019/07/04(木) 23:07:41.19ID:3GgPlSpw
ライフゲームだけど、生まれる話は聞いてないなぁ。
主が生まれる条件書いてねー気がする。
0711デフォルトの名無しさん
垢版 |
2019/07/05(金) 00:31:50.12ID:4z1quspY
>>695,704 Perl5

sub f {
 @a = map{'*' eq $_} split '', '.*...**.*.***..';
 for ($t = 2; $t <= 100; $t++) {
  @b = $_[0]->();
  $t--, last if "@b" eq "@a";
  @a = @b;
 }
 @a = map{$_ ? '*' : '.'} @b;
}
f(sub{$a[1], (map{$a[$_] and ($a[$_-1] xor $a[$_+1])} 1..$#a-1), $a[$#a-1]});
print "生存のみ $t: ", @a, "\n";
f(sub{$a[1], (map{$a[$_-1] xor $a[$_+1]} 1..$#a-1), $a[$#a-1]});
print "誕生あり $t: ", @a, "\n";

実行結果
~ $ perl 14_695.pl
生存のみ 3: .....**........
誕生含む 13: ...............
0712デフォルトの名無しさん
垢版 |
2019/07/05(金) 00:33:12.20ID:4z1quspY
>>711 ゴメン実行結果貼り間違えた
~ $ perl 14_695.pl
生存のみ 3: .....**........
誕生あり 13: ...............
0713デフォルトの名無しさん
垢版 |
2019/07/05(金) 00:41:15.13ID:4z1quspY
>>711 たびたびゴメン、微妙に間違えていた、この入力の場合答えは変わらないけど
sub f {
 @a = map{'*' eq $_} split '', '.*...**.*.***..';
 for ($t = 2; $t <= 100; $t++) {
  @b = $_[0]->();
  $t--, last if "@b" eq "@a";
  @a = @b;
 }
 @a = map{$_ ? '*' : '.'} @b;
}
f(sub{map{$a[$_] and ($a[$_-1] xor $a[$_+1])} 0..$#a});
print "生存のみ $t: ", @a, "\n";
f(sub{$a[1], (map{$a[$_-1] xor $a[$_+1]} 1..$#a-1), $a[$#a-1]});
print "誕生あり $t: ", @a, "\n";


~ $ perl 14_695.pl
生存のみ 3: .....**........
誕生あり 13: ...............
0715701
垢版 |
2019/07/05(金) 07:27:15.34ID:FwZHoBTZ
>>695 ruby 13ターンで全滅 (>>701 bit演算化)
life = '.*...**.*.***..'
bord = life.tr('.*','01').to_i(2)
mask = 2 ** life.size - 1
fmt = "%%0%db" % life.size
100.times{|gene|
puts "%5d %s" % [gene+1, (fmt % bord).tr('01','.*')]
bord2 = ((bord<<1)^(bord>>1)) & mask # rule 1, 2, 3, 4
break if bord == bord2
bord = bord2
}
0716695
垢版 |
2019/07/05(金) 12:37:23.14ID:imex3OYJ
>>706
>1. 両隣が生きていれば、暑苦しいので死ぬ
これを変形して、

1a. 自マスが生きている場合、両隣が生きていれば、暑苦しいので死ぬ
1b. 自マスが死んでいる場合、両隣が生きていれば、生きる(新たに誕生する)

1c. ただし、両端の2つのマスについては、1a, 1b を適用せず、ルール4 で良い。
4. 両端の2つについては、隣が生きていれば生きるし、隣が死んでいれば死ぬ

つまり、両端の2つについては、そのマスの両隣の内、
存在しないマスを死んでいるものとして扱うと、常に、1a, 1bには該当しない

興味があれば、この変形ルールでも、やってみてください!
ただし、漏れは、どうなるのか知りませんがw

>>707
確かに、ルール90 と同じです
0717デフォルトの名無しさん
垢版 |
2019/07/05(金) 15:42:56.85ID:RqW7c8ei
【7ピンN枚の河内塔の最短手順問題】

初期状態では帽子はピン0
にあり、ピン6にすべて移す
までの最小手順の回数を求める

例:
N=3 5回
0->4
0->5
0->6
5->6
4->6
0718デフォルトの名無しさん
垢版 |
2019/07/05(金) 16:33:02.65ID:FwZHoBTZ
>>716 ruby 63ターン以降2周期ループ(62,63,62,63,,,)
life = '.*...**.*.***..'
bord = life.tr('.*','01').to_i(2)
mask = 2 ** life.size - 1
fmt = "%%0%db" % life.size
bords = {bord=>true}
100.times{|gene|
puts "%5d %s" % [gene+1, (fmt % bord).tr('01','.*')]
bord2 = (bord<<1 ^ bord>>1 | bord<<1 & bord>>1 & ~bord) & mask # rule >>706, >>716
break if bords[bord2]
bord = bord2
bords[bord] = true
}
0719695
垢版 |
2019/07/05(金) 17:47:06.08ID:imex3OYJ
>>718
循環しましたか?

循環を発見するには、すべてのターンを記録して照合しないといけないから、大変!
0721695
垢版 |
2019/07/05(金) 19:42:34.54ID:imex3OYJ
>>720
3. 両隣の内、片方だけが生きていれば、生きる

元々、生きるには、誕生する事も含むから、3a, 3b は、必要ない

ただ、
>>706
の提案で、1a, 1b の所だけを変えてみたのが、
>>716
0723デフォルトの名無しさん
垢版 |
2019/07/05(金) 23:55:57.51ID:FwZHoBTZ
#>>716 ruby # Rule を配列化。 (L C R) 3bit 0..7 の状態 >>659なら [0,1,0,1,1,0,1,0]
Rule = [0,1,0,1,1,1,1,0] # rule >>706, >>716
life = '.*...**.*.***..'
lifeBit = life.size
bord = life.tr('.*','01').to_i(2)
fmt = "%%0%db" % lifeBit
bords = {bord=>true}
100.times{|gene|
puts "%5d %s" % [gene+1, (fmt % bord).tr('01','.*')]
bord <<= 1
bord2 = 0
lifeBit.times{|bit|
bord2 |= Rule[bord & 7] << bit
bord >>= 1
}
bord = bord2
break if bords[bord]
bords[bord] = true
}
0724デフォルトの名無しさん
垢版 |
2019/07/05(金) 23:56:51.12ID:aY14jca4
>>716 Pharo/Squeak Smalltalk

| map next seq start |
map := '.*...**.*.***..' asArray collect: [:x | (x = $*) asBit].
seq := OrderedCollection with: map.
next := [ | acc |
acc := map + (map allButFirst, {0}) + ({0}, map allButLast).
((#(1 2) collect: [:x | acc collect: [:elem | (elem = x) asBit]]) * {map negated + 1. 1}) sum
].
[(start := seq indexOf: (map := next value)) > 0 or: [seq size >= 100]] whileFalse: [seq add: map].
(start = 0 or: [start = seq size]) ifTrue: [seq size] ifFalse: [start to: seq size]

"=> (62 to: 63) "
0727デフォルトの名無しさん
垢版 |
2019/07/06(土) 15:56:23.82ID:xBT7e3zK
>>716 Perl5、5で止まる。>>720>>721の解釈違い?それともオレのBug?

%s = qw(. 0 * 1);
@a = map{$s{$_}} split '', '.*...**.*.***..';
$t = 1;
%h = ("@a" => $t);
printf "%2d: @a\n", $t;
for ($t = 2; $t <= 100; $t++) {
 @b=($a[1] ? $a[0] : 0,
   (map{
    ($a[$_-1] xor $a[$_+1]) ? $a[$_] :
     (($a[$_-1] and $a[$_+1]) ? ($a[$_]?0:1) : 0)
   } 1..$#a-1),
   $a[-2] ? $a[-1] : 0
   );
 printf "%2d: @b\n", $t;
 @a = @b;
 $t--, last if exists $h{"@a"};
 $h{"@a"} = $t;
}
@c = map{$_ ? '*' : '.'} @a;
printf "%d => @c\n", $t;

実行結果
~ $ perl 14_716.pl
1: 0 1 0 0 0 1 1 0 1 0 1 1 1 0 0
2: 0 0 0 0 0 1 1 1 0 1 1 0 1 0 0
3: 0 0 0 0 0 1 0 1 1 1 1 1 0 0 0
4: 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0
5: 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0
6: 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0
5 => . . . . . . * * . . . . . . .
0729デフォルトの名無しさん
垢版 |
2019/07/06(土) 16:25:41.58ID:ZIRVHkTq
>>717
問題がわからない。
河内塔って何?
0731デフォルトの名無しさん
垢版 |
2019/07/06(土) 16:38:33.50ID:Qorx3cLN
(- (expt 2 n) 1) ぐらいの手数増加がやばいやつか
たった64枚で移し終えると世界が滅びるらしいぞw
0732デフォルトの名無しさん
垢版 |
2019/07/06(土) 16:51:49.60ID:ZIRVHkTq
>>730
色々ググっている内に中国語で書かれたサイトで「河内塔」が見つかった。
中国語がよくわからないので何とも言えないがどうやらハノイの塔のようだ。
「河内塔(Tower of Hanoi)」と書いてある個所があり下の方にある画像は正にその説明になっている。
https://blog.csdn.net/jon_me/article/details/41986461
0735デフォルトの名無しさん
垢版 |
2019/07/06(土) 17:31:45.90ID:LdZDcwTE
>>733
えーっと、そのこーどだけど、死んでるセルの隣に生きてるセルがいたら生まれてるんだけどあってる?
0739デフォルトの名無しさん
垢版 |
2019/07/06(土) 18:21:51.90ID:xBT7e3zK
>>733 ご指摘ありがとう。 >>721

> 3. 両隣の内、片方だけが生きていれば、生きる
> 元々、生きるには、誕生する事も含むから、3a, 3b は、必要ない

を、「3.自マスが死んでいる場合、両隣の何れかでも生きていれば、生まれる。」
と言う意味と捕らえなおして、>>713を書き換えたら、63でloopしたよ。

>>716

>1b. 自マスが死んでいる場合、両隣が生きていれば、生きる(新たに誕生する)

と誕生条件が書いてあったので、3の条件は「生まれる」条件も含むとは考えず、

「3.両隣の内、片方だけが生きていれば、自マスが生きていれば生きる(し、死んでいれば死んだまま)。」
と解釈して >>713 を作ったのが63でloopしなかった原因だと分かった。
0740デフォルトの名無しさん
垢版 |
2019/07/06(土) 18:25:42.01ID:xBT7e3zK
>>716,721 Perl5

%s = qw(. 0 * 1);
@a = @a = map{$s{$_}} split '', '.*...**.*.***..';
$t = 1;
%h = ("@a" => $t);
@h = ("@a");
for ($t = 2; $t <= 100; $t++) {
 @b=($a[1] ? 1 : 0,
   (map{
    ($a[$_-1] xor $a[$_+1]) ? 1 :
     (($a[$_-1] and $a[$_+1]) ? ($a[$_]?0:1) : 0)
   } 1..$#a-1),
   $a[-2] ? 1 : 0
   );
 @a = @b;
 push @h, "@a";
 $t--, last if exists $h{"@a"};
 $h{"@a"} = $t;
}
$i = $h{"@a"};
print $_ - 1, ": $h[$_-1]\n" for $i..@h;

実行結果
~ $ perl 14_716_721.pl
61: 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
62: 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0
63: 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
0741デフォルトの名無しさん
垢版 |
2019/07/06(土) 18:44:26.01ID:xBT7e3zK
>>716,721 Perl5、ゴメン、結果は0 1じゃなくて.*のstringで表示すべきだったので修正させていただきます

@a = split '', '.*...**.*.***..';
@h = ("@a");
@a = map{'*' eq $_ ? 1 : 0} @a;
$t = 1;
%h = ("@a" => $t);
for ($t = 2; $t <= 100; $t++) {
 @b=($a[1] ? 1 : 0,
   (map{
    ($a[$_-1] xor $a[$_+1]) ? 1 :
     (($a[$_-1] and $a[$_+1]) ? ($a[$_]?0:1) : 0)
   } 1..$#a-1),
   $a[-2] ? 1 : 0
   );
 push @h, join'',map {$_ ? '*' : '.'} @b;
 @a = @b;
 $t--, last if exists $h{"@a"};
 $h{"@a"} = $t;
}
$i = $h{"@a"};
print $_ - 1, ": $h[$_-1]\n" for $i..@h;

実行結果
~ $ perl 14_716_721.pl
61: *.*.*.*.*.*.*.*
62: .*.*.*.*.*.*.*.
63: *.*.*.*.*.*.*.*
0742◆QZaw55cn4c
垢版 |
2019/07/06(土) 19:13:43.46ID:wBQNST8m
お題と回答
>>5 : 6 10 32 36 44
>>9 : 15 34 35 79
>>11=>>575 : 48 (78) 138-139 (140) 142 146 151 154
>>19 :
>>50, https://mevius.5ch.net/test/read.cgi/tech/1549160513/920 : 4 85 89
https://mevius.5ch.net/test/read.cgi/tech/1549160513/988 == >>164 : 59 61 167 169 189 192 201 202
>>90 : 95 96
>>99 :
>>200 : 214 219
>>215 : 227
>>220 : 232 240 248 256 268
>>235 : 236 237 238 239 247 249 259 342 353
>>320 : 321 323 327 330 340
>>322 : 325 328 329 331 332 339 341 358 359
0743◆QZaw55cn4c
垢版 |
2019/07/06(土) 19:14:04.22ID:wBQNST8m
>>362 : 367 369 370 371 374 379 380 382 414
>>368 : 390
>>388 : 487 (488) 553 559
>>400 : 401
>>408 :
>>417 : 418 419 421 426 432 433 436 438 442 446 451 452 456 471 474 480 482 489 492 495 498 528 530 540
>>479 :
>>555 : 556 558 564 565
>>557 : 560 562 568 569
>>570 : 574 577
>>573 : 604 622
>>600 : 605 607 611 613 627 691
>>615,626 :
>>632 : 637 640 645 649 650 687 689-690
0747695
垢版 |
2019/07/07(日) 08:03:43.59ID:Ts5uCd7M
だから、誕生という概念を作ると、説明が難しいから、「生死」の状態だけにした。
生死だけなら、前の状態に関係ない、前の状態と切れているから

誕生という概念を使うと、
a. 前の状態が死んでいる時と、
b. 前の状態が生きている時で、

処理が変わってくるから複雑になって、勘違いする人も出てくるから
0749デフォルトの名無しさん
垢版 |
2019/07/07(日) 17:48:05.53ID:Sb2el8tu
>>747
状態が関係ないと実装の工夫のしどころが失われて面白みが半減すると思うよ

最初の何ターンかを例として示せば済むはなしだし
手元で実装を試していればなおさら何の苦もないことかと

細かい事を言うと、本当に実装を試さずに出題しているのならそれはルール違反なんだよね
(チューリングの泥沼問題回避や宿題の丸投げ防止)
0750◆QZaw55cn4c
垢版 |
2019/07/07(日) 19:42:47.11ID:wvjux210
>>749
出題者が実装をひとつは持っておく、というのは努力目標でいいんじゃないかな?お題が面白ければ私は許容しますね
まあ自分のお題は面白くないので実装をひとつくらいは持つようにしていますが…
0752蟻人間 ◆T6xkBnTXz7B0
垢版 |
2019/07/07(日) 21:06:25.36ID:JhpdhjN9
お題: 生徒の氏名、身長、体重の3つからなる複数のレコードが与えられる。氏名とBMIを左揃えのテキストの表にせよ。
単位はMKS単位系、テキストはASCIIおよび等幅フォントが使われると仮定してよい。

Tanaka Naoki 15kg 2m
Inoue Ken 280g 32cm
Akai Ryusei 1mg 3km
0753蟻人間 ◆T6xkBnTXz7B0
垢版 |
2019/07/07(日) 21:26:21.37ID:JhpdhjN9
お題: MKS単位系の単位を変換する関数またはクラスを作れ。

1kg:g
→1000g

2m:cm
→200cm
0756蟻人間 ◆T6xkBnTXz7B0
垢版 |
2019/07/07(日) 21:44:56.12ID:JhpdhjN9
物理シミュレーションが人間の手から離れて自由自在にならなければ、火星への仮想移住もできない。MKS単位系の計算術は重要だ。
0761蟻人間 ◆T6xkBnTXz7B0
垢版 |
2019/07/07(日) 23:19:20.77ID:0lH1eUtN
長さの単位、質量の単位、そして時間の単位の3つがある。これにキロ、ミリ、マイクロなどが前に付く。
変換方法は複数あり、何から何への変換方法はデータとして与えられ、それらは追加可能でなければ不便。
0762◆QZaw55cn4c
垢版 |
2019/07/07(日) 23:23:22.07ID:wvjux210
先生!質問です!
重さの規準は kg ですか?それとも g ですか?え?kg?おっかしーなー?kg の kって単なる接頭辞 prefix なのでは?
0764デフォルトの名無しさん
垢版 |
2019/07/08(月) 00:24:27.94ID:YBWHLZTU
長さ1センチの鼻毛を鉛直方向に1ニュートンの力で引っ張り、抜いたときに感じる痛みは1ハナゲ
0765◆QZaw55cn4c
垢版 |
2019/07/08(月) 00:28:17.48ID:5PNDCGkj
>>763
質量は J に等価交換できても長さや時間は無理なのでは?
0767デフォルトの名無しさん
垢版 |
2019/07/08(月) 08:05:28.83ID:ATr0dgzt
タブ区切りの文字列の置換リストがあって、そのとおりにテキストファイルファイルを置換したい
そういうソフトありますか?
見つからないので自作しようとおもったけどここへ書いてみた


置換リスト例

ああああ うううう
aaaaa QQQQQ
0768デフォルトの名無しさん
垢版 |
2019/07/08(月) 08:09:30.46ID:ATr0dgzt
コマンドラインでGREPと置換できるソフトはあるんだけど。
DOSの文字制限と、正規表現の制限で、
置換したい文字の設定がややこしい。あと複数同時にできない。
文字を加工せずできれば便利だなと。
0770デフォルトの名無しさん
垢版 |
2019/07/08(月) 11:02:56.96ID:tzeJFuHl
>>767
Perlでも使えば?文字列置換楽だよ。
0772◆QZaw55cn4c
垢版 |
2019/07/08(月) 18:59:50.46ID:qs7HTSo5
>>766
時間や長さを J で統一することは自然単位系でもできませんね…
0775デフォルトの名無しさん
垢版 |
2019/07/08(月) 22:57:02.15ID:G1DtFXg8
Ruby では変換表を使って、置換できる

hash = { 'ab' => 'あ', 'xy' => 'ん' }

p re = Regexp.union( hash.keys ) #=> /ab|xy/

p "9xy9ab9xyx".gsub( re, hash )
#=> 9ん9あ9んx

gsub(pattern, hash) -> String
文字列中の pattern にマッチした部分をキーにして、hash を引いた値で置き換える

hash = {'b'=>'B', 'c'=>'C'}
p "abcabc".gsub(/[bc]/){hash[$&]} #=> "aBCaBC"
p "abcabc".gsub(/[bc]/, hash) #=> "aBCaBC"
0776デフォルトの名無しさん
垢版 |
2019/07/09(火) 00:46:29.33ID:b1/VU+FF
rubyの宣伝とはいえ、宿題に餌やるなら、問われている事柄に応えてやったらどうかと思う。
宣伝意識が前面に出すぎて目的を忘れるなかれ、って感じ。
0777デフォルトの名無しさん
垢版 |
2019/07/09(火) 00:48:43.11ID:b1/VU+FF
    |                   \
    |  ('A`)           ギシギシ
   / ̄ノ( ヘヘ ̄ ̄        アンアン/
0778デフォルトの名無しさん
垢版 |
2019/07/09(火) 04:09:17.17ID:0VeokVre
[ 弘前大 ]
和が406 で、最小公倍数が2,660 である、2つの整数を求めよ

答え
14 * 10 = 140
14 * 19 = 266
0779デフォルトの名無しさん
垢版 |
2019/07/09(火) 08:28:09.19ID:chrBBqpb
整数問題は脳死でこう叩く
(loop for x from 1 to 1000 do (loop for y from 1 to 1000 when (and (eq (+ x y) 406) (eq (lcm x y) 2660)) do (format t "~a ~a~%" x y)))
140 266
266 140
0780778
垢版 |
2019/07/09(火) 08:48:05.20ID:0VeokVre
和が406 ですよ

1〜405 を確認すれば十分!
0781デフォルトの名無しさん
垢版 |
2019/07/09(火) 08:52:39.17ID:chrBBqpb
大学の入試問題の大半 8割ぐらいは1000までローラーすればいい
だから経験上1000やっちゃうんだよね
最適化してくなら for y from x
とかも効かすけど
3乗算決めるぐらいまでは問題ない速度が出てる(loop x(loop y(loop z
0785◆QZaw55cn4c
垢版 |
2019/07/09(火) 18:57:01.98ID:Rbs4mLR8
>>782
煽るだけではねえ…時間や長さを J に統一するために自然単位系がどう使えるのか書けるのですか?
0786デフォルトの名無しさん
垢版 |
2019/07/09(火) 19:43:25.84ID:ggPtzp0W
壮大な話やなぁ。
その時間系に所属する人の仕事量を全部計算するんかいな??
アホだからこんなこと思うわ。
0787デフォルトの名無しさん
垢版 |
2019/07/09(火) 21:57:24.41ID:gdYXIa6p
私は頭は良いのだが知識がないため君らが何を言っているのかがよくわからない。
0788778
垢版 |
2019/07/12(金) 14:53:22.97ID:uwyqXnfJ
>>778
Ruby で、

require 'prime'

sum = 406 # 和
lcm = 2_660 # 最小公倍数。least common multiple

# 最大公約数。greatest common divisor
gcd = sum.gcd( lcm ) # 14

# 最大公約数で割ったもの
sum_2 = sum / gcd # 29
lcm_2 = lcm / gcd # 190

# 半分(1〜15)まで、ループする。ary は、10
ary = ( 1..( sum_2 + 1 ) / 2 ).each.select {
|num| num * ( sum_2 - num ) == lcm_2 }

# 14 * 10 = 140, 14 * 19 = 266
p gcd * ary.first, gcd * ( sum_2 - ary.first )
0789デフォルトの名無しさん
垢版 |
2019/07/12(金) 17:09:23.04ID:uwyqXnfJ
お題、聖光学院中学校入試問題

1〜10 の10枚のカードの内、4枚を取り出して、a〜d に入れて、
下の式を満たす置き方は、何通りあるか?

( a + b ) * ( c + d ) = 100

答え、48通り
0791デフォルトの名無しさん
垢版 |
2019/07/12(金) 17:31:38.31ID:B1Jsh2gD
やってから気づいたけど、forで回したほうが早いな。
それと、ネクストコンビネーションがほしいのじゃー。
0792デフォルトの名無しさん
垢版 |
2019/07/12(金) 17:38:32.51ID:N+Dr1mVf
>>778
sum := 406, lcm := 2660
c := gcd(sum, lcm)

(c * t_-, c * t_+) = (140, 266) where t_± = (sum ± √(sum^2 -4c * lcm)) / 2c = (29 ± 9) / 2
0795デフォルトの名無しさん
垢版 |
2019/07/12(金) 19:41:17.85ID:Rp3XUaKp
>>793
なるほど
0796デフォルトの名無しさん
垢版 |
2019/07/12(金) 20:06:13.56ID:OtxPhCkg
>>789
4P4 = 12 がなかったので暗算埋め込みしてしまった
(loop with i = 0 for a from 1 to 10 do (loop for b from (1+ a) to 10 do (loop for c from (1+ b) to 10 do (loop for d from (1+ c) to 10 when (eq 100 (+ (* a b) (* c d))) do (incf i)))) finally (print (* 12 i)))
48
0797デフォルトの名無しさん
垢版 |
2019/07/13(土) 02:35:29.76ID:P33eZqk8
>>569
遅レスだが

innerHTML はヤメロ
appendChild にしとけ…今回のケースでは問題にならないっちゃならないが…
0798◆QZaw55cn4c
垢版 |
2019/07/13(土) 16:47:09.19ID:KfP9prYE
>>9 : 15 34 35 79
>>11=>>575 : 48 (78) 138-139 (140) 142 146 151 154
>>19 :
>>50, https://mevius.5ch.net/test/read.cgi/tech/1549160513/920 : 4 85 89
https://mevius.5ch.net/test/read.cgi/tech/1549160513/988 == >>164 : 59 61 167 169 189 192 201 202
>>90 : 95 96
>>99 :
>>200 : 214 219
>>215 : 227
>>220 : 232 240 248 256 268
>>235 : 236 237 238 239 247 249 259 342 353
>>320 : 321 323 327 330 340
>>322 : 325 328 329 331 332 339 341 358 359
0799◆QZaw55cn4c
垢版 |
2019/07/13(土) 16:47:24.66ID:KfP9prYE
>>362 : 367 369 370 371 374 379 380 382 414
>>368 : 390
>>388 : 487 (488) 553 559
>>400 : 401
>>408 :
>>417 : 418 419 421 426 432 433 436 438 442 446 451 452 456 471 474 480 482 489 492 495 498 528 530 540
>>479 :
>>555 : 556 558 564 565
>>557 : 560 562 568 569
>>570 : 574 577
>>573 : 604 622
>>600 : 605 607 611 613 627 691
>>615,626 :
>>632 : 637 640 645 649 650 687 689-690
0802デフォルトの名無しさん
垢版 |
2019/07/13(土) 18:59:07.37ID:/5VqfFnz
回答は容易に手繰れるのではっきり言って無用だし迷惑です
どうしてもまとめたいなら
例えば、どんな言語でどのお題に回答しているか整理したものとか付加価値を付けるべきでしょう
0803◆QZaw55cn4c
垢版 |
2019/07/13(土) 19:58:46.31ID:KfP9prYE
>>802
ご意見ありがとうございます、参考にいたします
0807デフォルトの名無しさん
垢版 |
2019/07/14(日) 08:46:45.28ID:7ouziBbN
お題
ミニミニなパスカルの三角形を表示する

1
11
121
1331
14641
0808デフォルトの名無しさん
垢版 |
2019/07/14(日) 08:56:51.66ID:hrWXJ2sa
11^0
11^1
11^2
11^3
0809デフォルトの名無しさん
垢版 |
2019/07/14(日) 10:31:51.37ID:I+Q1ZQVX
>>807 Ruby

pascal = -> n {n > 0 ? [0, *pascal(n-1), 0].each_cons(2).map(&:sum) : [1]}

(0..9).map{|i| puts pascal[i].join(?\ )} # =>
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
1 7 21 35 35 21 7 1
1 8 28 56 70 56 28 8 1
1 9 36 84 126 126 84 36 9 1
0811デフォルトの名無しさん
垢版 |
2019/07/14(日) 22:14:12.29ID:xwqPe1DN
>>807 Perl5

for (1..5) {
 @a = (1, map{$a[$_] + $a[$_+1]} 0..$#a);
 print @a,"\n";
}


実行結果
$ perl 14_807.pl
1
11
121
1331
14641
0812デフォルトの名無しさん
垢版 |
2019/07/14(日) 22:28:38.27ID:niuQOGKU
>>807 python3
#!/usr/bin/python3
fractal_width = 19

xs = [1]
for i in range(1, fractal_width +1):
  for x in xs:
    print(x, "", end="") #xs sequence
  print("")

  xs.insert(0, 0)
  xs.append(0)
  xs = [ (xs[i] + xs[i +1]) for i in range(len(xs) -1)]
0813デフォルトの名無しさん
垢版 |
2019/07/14(日) 22:30:14.85ID:niuQOGKU
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1

結果はいいけどコードのほうが酷い
print(x, "", end... あたりが最悪
0814デフォルトの名無しさん
垢版 |
2019/07/14(日) 23:26:39.88ID:xwqPe1DN
>>807 Perl5, 無名関数のtail recursion版

use feature qw'say current_sub';
sub {
 say @_;
 __SUB__->(1, (map{$_[$_-1] + $_[$_]} 1..$#_), 1) if 5 > @_;
}->(1);


実行結果
$ perl 14_807.pl
1
11
121
1331
14641


※ Y-combinator版はマンドクせーので(ry
0815デフォルトの名無しさん
垢版 |
2019/07/14(日) 23:34:52.64ID:K5rloPX/
>>807 Squeak Smalltalk

| pascal grow |
pascal := OrderedCollection with: #(1).
grow := [pascal add: {1}, (pascal last overlappingPairsCollect: #+), {1}].
7 timesRepeat: grow.
(pascal collect: [:each | each joinSeparatedBy: ' ']) asStringWithCr

"=>'1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
1 7 21 35 35 21 7 1' "
0817デフォルトの名無しさん
垢版 |
2019/07/15(月) 02:14:22.17ID:C2jHumZF
時事通信は中立的でもっとも正確。朝日新聞は若干、旧民主党寄りの予想を出した。産経新聞は若干、自民党寄りの予想を出した。

それでもこの3つの分析には大差がない。東京選挙区はほぼ確定した。

当選者は自民党現職の丸川(台本がないと何を言うかわからないぶっとび女)、

自民党現職の武見(いつものハゲじじいもう5回シコシコ)、

公明党現職の山口公明党代表(誰もやりたがらない創価学会内の仕事を押し付けられているかわいそうな人)、

立憲民主党の塩村(東京で人気のいまでもオカズになるヌける熟女)、

共産党の吉良(共産党の女性アイドル、もう年だがまだまだエロオヤジに人気)、

立憲民主党の山岸(元朝日新聞政治部のメガネ、前頭ハゲ進行中)。

与党側3人当選、野党側3人当選で東京選挙区は与野党引き分け。


落選者で得票数第1位は維新の会の音喜多(東京都北区の区長選で落ちたのは悪口が書かれたせいだとして裁判で争っている最中のクズ、小池百合子都知事の元小間づかい、寄生できそうな政党につく虫)。


以上
0818デフォルトの名無しさん
垢版 |
2019/07/15(月) 09:18:43.09ID:lV5+33Om
お題
年金AI化をする

設計を考えよ

どの部分を人間にしてどの部分を機械にするか
っていうだけだと思うけど

すごい初級プログラマーでも作れちゃうほど簡単じゃねと気になった
あまりにかんたんで民間年金ですでにありそうだが
0820デフォルトの名無しさん
垢版 |
2019/07/15(月) 10:43:37.19ID:lV5+33Om
入金
銀行データ紹介
入金人数と金額確認 ←入力 新規入力者の確認 人力目視



出金人数と出勤額


みたいなかんじ
0821デフォルトの名無しさん
垢版 |
2019/07/16(火) 02:32:24.14ID:awioItM7
>>807
Kotlin
https://paiza.io/projects/ed7oOf_rIHOgekOlUxGYSQ
うっかり普通にフォーマットして3角に出るようにしてしまった。もっと簡単に出しても良かったんだな。
0822デフォルトの名無しさん
垢版 |
2019/07/17(水) 18:49:01.14ID:rBzTe21k
>>807 R
cat(11^(0:4),sep="\n")
0827デフォルトの名無しさん
垢版 |
2019/07/17(水) 22:23:45.10ID:FVhP9md/
>>824 Ruby

require 'polynomial'
require 'polynomial/calculus'

expr = Polynomial.new(1, -1) * Polynomial(1, 1)
puts expr.integrate(-1..1)
# => (4/3)
0831デフォルトの名無しさん
垢版 |
2019/07/18(木) 01:42:36.36ID:4Fot9DWw
>>824 >>825 Perl5

#(x-1)(x+1)⇒1-x^2
#∫(1-x^2)⇒x-(x^3/3)
# [x-(x^3/3)] {-1, 1} ⇒ -1-(-1/3) + 1-(1/3)
# ⇒1 -1/3 - (-1+1/3) ⇒ 2 - 2/3 ⇒ 4/3
# 暗算でも定積分値を求めることはできるが、代わりに
# 幅0.01の台形法による数値計算で解を計算すると…
use List::Util sum;
$s = sum map{.01*(1-($_/100)**2)} -99..99;
print "$s\n";


実行結果
$ perl 14_824.pl
1.3333
0832デフォルトの名無しさん
垢版 |
2019/07/18(木) 07:25:42.17ID:r8faaY2+
>>830
せっかく驚いてくれているのに水を差すようで恐縮なのだけど
誤解があるといけないので念のため補足しておきますと
これは>>826-828みたいに数式処理をしているわけではなく
定積分の筆算を式にしただけ(つまり 1-x^2 の積分である
x-(1/3)x^3 に 1 を代入したときの値から -1 を代入した値を引いただけ)です

もとより #(a b c d) polynomialEval: x "=> a*x^0 + b*x^1 + c*x^2 + ..." みたいな機能が
組み込みで用意されている点では、
こういうとき式を書かずに済んで便利ではありますが^^;
0833蟻人間 ◆T6xkBnTXz7B0
垢版 |
2019/07/18(木) 12:47:19.12ID:OgRfjymX
お題: マルバツゲームを作れ。

_1_2_3
1O|_|_
_ー+ー+ー
2_|X|_
_ー+ー+ー
3_|_|_
0834蟻人間 ◆T6xkBnTXz7B0
垢版 |
2019/07/18(木) 12:58:43.13ID:OgRfjymX
(出力例)
プレーヤー1が先攻です。
プレーヤー1は何番に置きますか? 1
プレーヤー2は何番に置きますか? 5
...
プレーヤー2の勝ち。

O|2|3
ー+ー+ー
4|X|6
ー+ー+ー
7|8|9
0835デフォルトの名無しさん
垢版 |
2019/07/18(木) 22:59:22.13ID:e7HmHit7
マルバツゲームに便乗して…

お題:
3×3のマルバツゲームで両者がランダムな手を打つとき
先手の勝率、後手の勝率をそれぞれ求めよ。
0836デフォルトの名無しさん
垢版 |
2019/07/18(木) 23:07:20.49ID:xdHI+pcE
今、こういうお題を考えています

Ruby などの遅い言語でも解けるように、
盤面の大きさを、9*9 〜 13*13 ぐらいで考えていますが、どうでしょうか?

1. 開始点S(座標、0行0列)から終了点E までの、最小コストを求める。
2. S, E 双方から、E, S へ目指す場合に、最小コストで出会う座標と、その時のコストを求める

1ターンで、縦横1つ隣へ移動できる。
同じマスは、1回しか通らない。
数字が各マスへの移動コストで、_ は、単なる目印で無関係です

S2953_9413
71546_7988
83411_2946
23716_5426
47385_736E
0838836
垢版 |
2019/07/19(金) 00:20:37.85ID:hngv4enD
>>836
ルールを修正

1. 開始点S(座標、0行0列)から終了点E までの、最小コストを求める。
2. S, E 双方から、双方が出会うように移動する時、最小コストで出会う座標と、その時のコストを求める。
この時の最小コストは、双方のコストを足したものです

1ターンで、縦横1つ隣のマスへ、必ず移動する。
自分が通ったマスは、1回しか通らないが、相手が通ったマスは、通れます

数字が各マスへの移動コストで、_ は、単なる目印で無関係です

この2は、かなり難しいのかな?
最小コストが求まるのかな?
漏れにも、わからない
0839デフォルトの名無しさん
垢版 |
2019/07/19(金) 00:31:00.88ID:uE+iP71G
>>838
迷惑だからちゃんと整理して解ける問題か確認してから書き込め。説明も下手すぎるからちゃんと推敲しろ。
0842デフォルトの名無しさん
垢版 |
2019/07/19(金) 02:16:34.42ID:ApXEphk2
続き

player-2 writing X to ...
2
|X O|
|OOX|
|XXO|
player-1 writing O to ...
8
it's draw! finish a game without either one winning
0846デフォルトの名無しさん
垢版 |
2019/07/20(土) 00:17:01.47ID:fiB1nngo
>>836
最小重み経路問題かな?
軽く書いてみたけど、最短経路問題の3倍位難しい。
出直してくるわ。
0848◆QZaw55cn4c
垢版 |
2019/07/20(土) 08:18:17.29ID:jbjCUWIF
お題と回答
>>5 : 6 10 32 36 44
>>9 : 15 34 35 79
>>11=>>575 : 48 (78) 138-139 (140) 142 146 151 154
>>19 :
>>50, https://mevius.5ch.net/test/read.cgi/tech/1549160513/920 : 4 85 89
https://mevius.5ch.net/test/read.cgi/tech/1549160513/988 == >>164 : 59 61 167 169 189 192 201 202
>>90 : 95 96
>>99 :
>>200 : 214 219
>>215 : 227
>>220 : 232 240 248 256 268
>>235 : 236 237 238 239 247 249 259 342 353
>>320 : 321 323 327 330 340
>>322 : 325 328 329 331 332 339 341 358 359
0849◆QZaw55cn4c
垢版 |
2019/07/20(土) 08:18:32.72ID:jbjCUWIF
>>362 : 367 369 370 371 374 379 380 382 414
>>368 : 390
>>388 : 487 (488) 553 559
>>400 : 401
>>408 :
>>417 : 418 419 421 426 432 433 436 438 442 446 451 452 456 471 474 480 482 489 492 495 498 528 530 540
>>479 :
>>555 : 556 558 564 565
>>557 : 560 562 568 569
>>570 : 574 577
>>573 : 604 622
>>600 : 605 607 611 613 627 691
>>615,626 :
>>632 : 637 640 645 649 650 687 689-690
0853デフォルトの名無しさん
垢版 |
2019/07/20(土) 11:03:01.50ID:eNhk7IpQ
留数定理も知らないくせにしゃしゃりでてんじゃねえぞクソコテ白痴クロッチロット野郎が
0854◆QZaw55cn4c
垢版 |
2019/07/20(土) 14:28:34.17ID:jbjCUWIF
>>852
>言語別集計
次スレで採用しようと思います、このスレでよく使われる言語とその程度を棒グラフ的に認識したくなりました
0855デフォルトの名無しさん
垢版 |
2019/07/20(土) 14:50:09.53ID:OIy5RkDH
>>854
本当に申し訳ないんですがここに貼るないでもらっていいですか
0856デフォルトの名無しさん
垢版 |
2019/07/20(土) 14:51:10.98ID:OIy5RkDH
認識したいのならご自由にでも迷惑だからここには貼らないで
0859デフォルトの名無しさん
垢版 |
2019/07/20(土) 18:06:54.10ID:k4+mr7b7
お題: できるだけ少ない回数で1から1000の数を判定しろ

入力: 775
出力 n==755

入力: 2,4, ...., 1000
出力 n%2

入力: 3,4,5,6, 10
出力 : n-3<=3 ||n==10
0862デフォルトの名無しさん
垢版 |
2019/07/20(土) 19:25:23.08ID:c0ewdrdO
桃白白改めミスターポポ改めピラフ改めピッコロさんは毎回適当に出題してるからね
0863デフォルトの名無しさん
垢版 |
2019/07/20(土) 19:58:58.98ID:k4+mr7b7
>>861
うん
0864デフォルトの名無しさん
垢版 |
2019/07/20(土) 21:47:04.48ID:riEgRod9
>>859
xy座標で y = xのn-1次以下の式が
n個の点があたえられると導けるから
その出力の一意性に疑問がある
0865デフォルトの名無しさん
垢版 |
2019/07/20(土) 23:23:39.84ID:ge7gFbNK
お題
正の整数nと、正の整数のリスト2つ
a_1, ..., a_k
b_1, ..., b_k
が与えられる。
これに対して以下の操作を繰り返す。

操作: n*a_i/b_iが整数になる最初のa_i/b_iをnに掛ける

この操作ができなくなる時が来るかどうか判定してください。
0866デフォルトの名無しさん
垢版 |
2019/07/20(土) 23:44:40.61ID:riEgRod9
>>865
lisp
(loop for a in '(1 4 3 4 5 6) for b in '(7 8 9 10 11 12) with n = 14 when (integerp (* (/ a b) n)) do (return (format t "a:~a b:~a" a b)) finally (princ "not found"))
a:1 b:7

(loop for a in '(1 4 3 4 5 6) for b in '(7 8 9 10 11 12) with n = 13 when (integerp (* (/ a b) n)) do (return (format t "a:~a b:~a" a b)) finally (princ "not found"))
not found
0867デフォルトの名無しさん
垢版 |
2019/07/21(日) 00:23:35.41ID:Bd+iRrer
>>853
頭のおかしいガイジのくせに数学を語ってんじゃねぇよ
ぶっ殺すぞガイジ
実関数もわかってねぇくせに複素関数を語ってんじゃねぇよ
おめえの腸を掘り出して排水溝に捨てるぞ
0868デフォルトの名無しさん
垢版 |
2019/07/21(日) 00:27:00.70ID:RHDfdbdw
>>866
説明が足りなかった
iを見つけたら
n = n*a_i/b_i
として同じことを繰り返す
0870デフォルトの名無しさん
垢版 |
2019/07/21(日) 03:17:35.19ID:okP8VzSh
>>848
そのまとめ、専ブラ(ChMate)使ったら何も加工せずにより良い結果を表示できる
ってか、あんたの投稿で出題に無関係なレスもピックアップされてしまう
百害あって一利なし、なのでヤメてくれ
0876◆QZaw55cn4c
垢版 |
2019/07/21(日) 13:08:23.15ID:vddupZNY
>>875
>>873 は実害報告(>>870) に対する回避策への調査であり、プログラミング可能性とは関係ないでしょう
0878デフォルトの名無しさん
垢版 |
2019/07/21(日) 14:00:38.73ID:LwmwcwKU
なんで手間暇かけて他人の嫌がる余計なことするのかね
ろくな回答書けないなら黙ってROMってろって思うわ
0881デフォルトの名無しさん
垢版 |
2019/07/21(日) 15:57:20.08ID:5KK3hTpc
https://ideone.com/lOmm7w
>>836
C++。できた。終了位置がレンジ外だったりした。
ただ、いじりすぎてロックインしてないか心配だ。

概要としては、最小重み経路問題の非再帰関数バージョン。のはず。
0883デフォルトの名無しさん
垢版 |
2019/07/21(日) 21:50:34.29ID:WILkXhL9
>>865
問題かよくわからない。a_i/b_iをnに掛けた結果をどうするのか?何かに代入するのか?
0884デフォルトの名無しさん
垢版 |
2019/07/21(日) 22:55:45.10ID:tHXql6vE
n*a_i/b_iが整数になったらnにそれを代入して、もう一度頭から繰り返すんじゃろ
で、無限にその操作を繰り返せるのか途中で終わるのかを判定する
0887デフォルトの名無しさん
垢版 |
2019/07/22(月) 05:57:37.39ID:R4+31Tcv
QZとか言う馬鹿は自分がやっている事がことごとく嫌がらせになっているというのにも
全く気づいてないんだろうなあ
0889デフォルトの名無しさん
垢版 |
2019/07/22(月) 11:18:34.47ID:wZJ8iqbX
良かれと思ってやったのに迷惑だと言われる
千羽づるみたいだなって思いました
0891デフォルトの名無しさん
垢版 |
2019/07/22(月) 11:38:44.03ID:RNJMLfCg
>>889
千羽鶴なら独善ではあっても善意のつもりだというのは分かるが、QZのは他人のためでなく自分がそうしたいというだけの理由だから、より嫌われる
0892836
垢版 |
2019/07/22(月) 14:11:57.23ID:GAEqWBnq
お題・ルールは、
>>838
のままで良いです

マスは、11 * 11 で、やってみましょう!

空行・_ は、単に見やすくしただけなので、無視してください

S2953_94137_3
71546_79881_4
83411_29465_2
23716_54268_4
47385_73638_9

55263_74296_1
34945_87362_5
96755_42186_7
14893_12472_6
71911_47852_1

29437_95134_E
0896デフォルトの名無しさん
垢版 |
2019/07/22(月) 19:52:32.52ID:27NBQOQ4
S66
996
19E

超単純化した↑の場合
問1の場合はコスト18
問2の場合は座標(0,2) コスト19
で良いんだよな?
0897デフォルトの名無しさん
垢版 |
2019/07/22(月) 20:21:15.73ID:mrS8zraI
ホンダがらったフンだがらったヘンだがらった!フンフン!!

いでよ、主催者!!!
0898デフォルトの名無しさん
垢版 |
2019/07/22(月) 20:27:49.31ID:vmYUDJ0J
>>897
ここには特に主催している人は居ないし、そもそも組織になっていない。各個人か勝手にお題を出して解きたい人が解いてるだけ。
おそらく常連は居るだろうが基本的に匿名で誰が誰だかよくわからず、人か入れ替わっていてもわからない。
0900836
垢版 |
2019/07/23(火) 09:29:05.01ID:5GIBUFQK
問2 について考えてみた

最短ターンでは、10ターンで、双方が出会うけど、
その時の双方を足したコストが、最小とは限らない!

だから迂回路の場合、つまり、11ターン以上で出会うマスも、すべて考慮して、
その中から最小コストを選ぶ必要がある

例えば、あるマスが、S・E 双方から12ターンなど

その際、双方からのターン数が異なる場合は、関係ない。
例えば、あるマスが、Sから11ターンで、Eから13ターンなど

>>899
ダイクストラ法で良い。
漏れは、総当たりでやってみる
0901836
垢版 |
2019/07/23(火) 09:37:45.12ID:5GIBUFQK
>>896
問1 は、6 + 6 + 6 = 18

問2 は、左下の1 の所で出会うのなら、
S から、9 + 1 = 10
E から、9 + 1 = 10
で、合計20

出会うマスのコストを2回足しているけど、これで良いか
0903デフォルトの名無しさん
垢版 |
2019/07/23(火) 16:42:15.95ID:0hlsR1TA
Sは左上、Eは右下、盤面は正方形で良いのか?それともそれ以外のパターンも考慮しなきゃいけないのか
0904836
垢版 |
2019/07/23(火) 17:53:12.70ID:5GIBUFQK
>>903
正方形ではなく、長方形だね

マスの座標は、行列の順で、開始点は( 行0, 列0 )

漏れは、盤面の周囲に、番兵を置いて、考えてます
0905896
垢版 |
2019/07/23(火) 18:05:44.96ID:GpNXeX+q
>>901
うん、ぼけてた
コスト20やなw

問2で盤面サイズが奇数x偶数とかの場合はゴールはどう考えればいいの? 同時移動だとすれ違っちゃうが
Sが常に先に動く (Eが居るところで合流)
Eが常に先に動く (Sが居るところで合流)
SとE好きな方が先に動く (コストが低いマスの方で合流)
SとEが同時に動く (すれ違って合流できない? 中間点で合流? その場合のコストは?)

たとえば S12E とかの場合
0906836
垢版 |
2019/07/23(火) 20:32:34.55ID:5GIBUFQK
盤面のサイズが偶数では、問2 は無理

必ず、奇数×奇数
0910デフォルトの名無しさん
垢版 |
2019/07/25(木) 16:00:43.87ID:JLY47fmQ
任意の整数を引数に取り、フィボナッチ数か判別するisfib関数を作れ。
なお、フィボナッチ数では無い場合任意の整数と-1の組(Cなどは代わりの物)を、
フィボナッチ数ならフィボナッチ数=任意の整数とそれがフィボナッチ数列の何番めかを表す数の組を返す事。

例:
isfib 0 = (0,1)
isfib 1 = (1,2)
isfib 2 = (2,4)
isfib 3 = (3,5)
isfib 4 = (4,-1)
isfib 5 = (5,6)
0912デフォルトの名無しさん
垢版 |
2019/07/26(金) 01:20:21.47ID:E/v28Z/A
>>910 Perl5

sub isfib {
 $v = shift;
 %h = map{$_ => $_} @s = (0,1);
 do {
  $f = $s[-2] + $s[-1];
  push @s, $f;
  $h{$f} //= @s;
 } while $f < $v;
 ($v, $h{$v} // -1);
}
printf "isfib $_ = (%d,%d)\n", isfib $_ for 0..5;

実行結果
$ perl 14_910_isfib.pl
isfib 0 = (0,0)
isfib 1 = (1,1)
isfib 2 = (2,4)
isfib 3 = (3,5)
isfib 4 = (4,-1)
isfib 5 = (5,6)
0913デフォルトの名無しさん
垢版 |
2019/07/26(金) 06:33:07.15ID:NUjZudpe
>>910 Lua
function isFib(n)
  local a, b, c = 0, 1, 1
  while a < n do
    a, b, c = b, a + b, c + 1
  end
  if a ~= n then c = -1 end
  return n, c
end
0914836
垢版 |
2019/07/26(金) 09:34:26.36ID:54Ib42km
>>908-909
確かに、偶数×偶数は、
同じターンで、同じマスに入れますね!

S1
2E

S12
34E
0917デフォルトの名無しさん
垢版 |
2019/07/26(金) 22:09:57.95ID:wMkqv1Wf
「何番目かを返す」ってのが地味に難しいな
そこまでの全てのフィボナッチ数を求めないと無理じゃね?
0920蟻人間 ◆T6xkBnTXz7B0
垢版 |
2019/07/26(金) 23:31:36.17ID:HmAxaouE
お題: 水素原子、酸素原子、炭素原子からなる分子の化学式が与えられる。原子の種類と個数から考えられる分子構造をデータ構造で表現し、コンソール画面に可能なかぎり表示しなさい。

(例)
H2O --> H - O - H
CO2 --> O = C = O
CH4 -->
  H
 |
H- C - H
  |
  H
0921蟻人間 ◆T6xkBnTXz7B0
垢版 |
2019/07/26(金) 23:39:37.50ID:HmAxaouE
(例2) 図式化が難しければ、データ構造だけでもいい。

CO2 → (C, O, O), ((0, 1), (0, 2)).
H2O → (H, H, O), ((0, 2), (1, 2)).
CH4 → (C, H, H, H), ((0, 1), (0, 2), (0, 3)).
0927蟻人間 ◆T6xkBnTXz7B0
垢版 |
2019/07/27(土) 00:19:22.73ID:P0VdsVRX
備考。

ここでは単純のために「結合の手」を使ったモデルで考える。
原子によって結合の手の個数は決まっている(Cは4個、Oは2個、Hは1個)。
結合の手が余らないような分子構造のみを考える(一酸化炭素COのような構造は除外する)。
0928蟻人間 ◆T6xkBnTXz7B0
垢版 |
2019/07/27(土) 00:22:04.97ID:P0VdsVRX
電荷を持たない分子だけを対象とする。イオンではない。
0930デフォルトの名無しさん
垢版 |
2019/07/27(土) 03:29:25.97ID:IOXz7NXW
うわーおQZってまだ生きてたのか
昔NG推奨にしてスレ立てたような気がしたんだが
0932デフォルトの名無しさん
垢版 |
2019/07/27(土) 06:23:51.65ID:Okexx4cI
>>917
一般項 f(n) = (φ^n - (-φ)^(-n)) / sqrt(5) はnに対して狭義単調増加なので逆写像 fi(n) が存在して当然 fi・f(n) = n が成り立つ。
従って「そこまでの全てのフィボナッチ数を求めないと無理」は偽である。
0933デフォルトの名無しさん
垢版 |
2019/07/27(土) 06:26:39.77ID:Okexx4cI
>>920
化学式と分子構造は一対一対応してねえよ
そんなの今日日高校生ですら理解してるわ
二度と書き込むな
0934デフォルトの名無しさん
垢版 |
2019/07/27(土) 10:14:18.78ID:yKuZ7Tou
お題
非負整数m, nに対し、
f(m, n)= n+1 if m==0
f(m, n) = f(m-1, 1) if n == 0
f(m, n) = f(m-1, f(m, n-1)) otherwise
なるf(m, n)の値を求めよ

f(2, 1) = ?
f(4, 1) = ?
0937デフォルトの名無しさん
垢版 |
2019/07/27(土) 11:08:11.84ID:tV8GDyIW
>>932
あのさ、簡単に言うけどその逆関数は複素関数になるぞ
そこまで言うなら逆関数を使ってnを求めるプログラムを書いてみろ
ここはム板だ
0941◆QZaw55cn4c
垢版 |
2019/07/27(土) 12:26:28.44ID:BeYdmmLD
お題と回答
5 : 6 10 32 36 44
9 : 15 34 35 79
11=575 : 48 (78) 138-139 (140) 142 146 151 154
19 :
50, https://mevius.5ch.net/test/read.cgi/tech/1549160513/920 : 4 85 89
https://mevius.5ch.net/test/read.cgi/tech/1549160513/988 == 164 : 59 61 167 169 189 192 201 202
90 : 95 96
99 :
200 : 214 219
215 : 227
220 : 232 240 248 256 268
235 : 236 237 238 239 247 249 259 342 353
320 : 321 323 327 330 340
322 : 325 328 329 331 332 339 341 358 359
362 : 367 369 370 371 374 379 380 382 414
368 : 390
388 : 487 (488) 553 559
400 : 401
408 :
417 : 418 419 421 426 432 433 436 438 442 446 451 452 456 471 474 480 482 489 492 495 498 528 530 540
479 :
555 : 556 558 564 565
557 : 560 562 568 569
570 : 574 577
573 : 604 622
600 : 605 607 611 613 627 691
615,626 :
632 : 637 640 645 649 650 687 689-690
651 : 654 657 662 679 682
0942◆QZaw55cn4c
垢版 |
2019/07/27(土) 12:27:01.61ID:BeYdmmLD
655 :
661 :
683 : 685
695,704,716,721 : 696 697 701 703 711 713 714 715 718 722 723 724 727 740-741
708 : 714
717 :
752 :
753 : (760)
767 : 775
778 : 779 788 (792) 794
789 : 790 (793)
807 : 810 811 812 814 815 816 821 823
824 : 826 827-828 829 831
833 : 841
835 :
836,838,892 : 847 880 881 893 895
865,868 : 866 868
910 : 911 912 913 935
934 : 936 938 939
0948デフォルトの名無しさん
垢版 |
2019/07/27(土) 15:01:57.99ID:Okexx4cI
>>937
論点ずらすな
「〜は無理」って言ってるからそれを否定しただけ
ただ 1 <= n <= 2 で狭義単調増加じゃないからそこだけは訂正しておくが

てかどんな頭で考えたらこの逆関数が複素関数になるんだか
可哀そうだから答え書いといてあげるけどさ
fi(x) = (log(sqrt(5) * x + sqrt(5 * x^2 - 4 * (-1)^((x + 1) % 3))) - log(2)) / log(φ)
0950デフォルトの名無しさん
垢版 |
2019/07/27(土) 15:20:43.26ID:aB6NIKG8
ファイが何を指しているか・・・わからない・・・。
その定数5のいみがわからない。


そんな、ホラー。
0954デフォルトの名無しさん
垢版 |
2019/07/27(土) 15:29:41.45ID:IpJBqisA
おおかた、数学的には反論できなくて悔しくなってc++では〜などという難癖をつけたのだろう
これ以上はスレチだからどっかよそでやれ
0957デフォルトの名無しさん
垢版 |
2019/07/27(土) 15:35:44.71ID:d+qHn5lK
数学(?)の話してんのにCやC++で ^ はXOR演算子なんだがとかいうやつ初めて見たわ
無能アピールだとしたらこれ以上ないくらいに効果出てるな
0959デフォルトの名無しさん
垢版 |
2019/07/27(土) 15:40:49.84ID:7QbyGuYU
>そこまで言うなら逆関数を使ってnを求めるプログラムを書いてみろ!
どうせ無理だと思ってタンカを切ったら相手にあっさり答えを書かれてしまう(ついでに自分の間違いまで指摘されてしまう)
もし俺がこいつだったら、恥ずかしくなりすぎてXOR演算子云々で話をうやむやにする気持ちもわかるぞ
0961デフォルトの名無しさん
垢版 |
2019/07/27(土) 15:51:41.66ID:aB6NIKG8
作ってて思ったのはね。
片方の関数は、フィボナッチ数知らないと動作しないのじゃないかということ。
片方の関数は、フィボナッチ数もとめにいくんだけど。

んで、鳥と卵の問題に見えるので、どういう風に使えばよいのかわからない。
0965デフォルトの名無しさん
垢版 |
2019/07/27(土) 16:04:59.65ID:1cAkezH+
あの逆関数?を単純に放りこんだら解けなかった
一筋縄じゃいかないね

Solve[(Log(Sqrt(5) * x + Sqrt(5 * x^2 - 4 * (-1)^((x + 1) % 3))) - Log(2)) *2/(1 + Sqrt(5)) ==5,x]
Solve::nsmet: This system cannot be solved with the methods available to Solve.
0967デフォルトの名無しさん
垢版 |
2019/07/27(土) 16:08:06.87ID:7aZqje0Z
>>964
お前もまだいたの
0969デフォルトの名無しさん
垢版 |
2019/07/27(土) 16:13:46.18ID:aB6NIKG8
しかしまー、数式で可逆式まで考えられるモノなのだねぇ。感心するわ。。。
0974デフォルトの名無しさん
垢版 |
2019/07/27(土) 16:54:46.18ID:aB6NIKG8
念のため言っておくと、ideonは実行後コードと同じページにstdoutを表示する。
0977◆QZaw55cn4c
垢版 |
2019/07/27(土) 20:21:38.01ID:BeYdmmLD
>>934
アッカーマン関数であることにやっと気がつきました…
0981デフォルトの名無しさん
垢版 |
2019/07/28(日) 01:17:00.04ID:+ByOW8ha
お題
括弧のネストの深さの最大値を求めよ
括弧の対応が取れていない場合は-1を出力せよ


"{}" => 1
"}{" => -1
"" => 0
"{{{}{}}}{}" => 3
0984デフォルトの名無しさん
垢版 |
2019/07/28(日) 06:16:51.79ID:YNZYuVVC
>>981 Ruby

f = -> str {s = -str; (0..1.0/0).each{|i| s.gsub!('{}', '') || (break s.size.zero? ? i : -1)}}
['{}', '}{', '', '{{{}{}}}{}'].each{|e| puts "%p => %d" % [e, f[e]]}

# =>
"{}" => 1
"}{" => -1
"" => 0
"{{{}{}}}{}" => 3
0986デフォルトの名無しさん
垢版 |
2019/07/28(日) 14:44:03.09ID:NJaTvOic
>>981 Perl5

use List::Util 'max';
%h = qw({ 1 } -1);
for ('{}', '}{', '', '{{{}{}}}{}') {
 ($l, $m) = (0, 0);
 for (map{$h{$_}} split'') {
  $l += $_;
  $m = max $l, $m;
  last if $l < 0;
 }
 $m = -1 if $l;
 print "'$_' => $m\n";
}

実行結果
$ perl 14_981.pl
'{}' => 1
'}{' => -1
'' => 0
'{{{}{}}}{}' => 3
0987デフォルトの名無しさん
垢版 |
2019/07/28(日) 16:06:00.72ID:T1A0+dDM
>>979-980
もともと提示されてたのは式だけだし、式自体に誤差はないじゃん。アホなの?
てかさ、(-1)^((x+1)%3)で場合分けを吸収してるところは素直に上手いなぁとは思うけど元のフィボナッチ数列の式からの変形自体は高校生レベルじゃんこれ
「自分で考えたの?」てお前アホなの?
誰が解いても上の部分以外は同じになるっつーの

「2次方程式の解の公式で解きました!」
「その公式って自分で考えたの?」
くらい間抜けでアホ馬鹿丸出し生きる価値無し短小包茎白癬菌
1000デフォルトの名無しさん
垢版 |
2019/07/30(火) 07:12:39.03ID:RYwsY7rK
>>417
13694289/134217728
を使えば満足するだろうか?なぜなら
(rational
0.102030405060708090
10011012013014015016
01701801902002102202
30240250260270280290
30031032033034035036
03703803904004104204
30440450460470480490
50051052053054055056
05705805906006106206
30640650660670680690
70071072073074075076
07707807908008108208
30840850860870880890
90091092093094095096
0970980990100
)
13694289/134217728
10011001
垢版 |
Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 72日 13時間 39分 10秒
10021002
垢版 |
Over 1000Thread
5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────

会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。

▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/

▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
レス数が1000を超えています。これ以上書き込みはできません。

ニューススポーツなんでも実況